Add get multi level parent method. (#6460)
Java CI / Test JDK ${{ matrix.java }}, ${{ matrix.os }} (11, ubuntu-latest) (push) Has been cancelled Details
Java CI / Test JDK ${{ matrix.java }}, ${{ matrix.os }} (17, ubuntu-latest) (push) Has been cancelled Details
Java CI / Test JDK ${{ matrix.java }}, ${{ matrix.os }} (21, ubuntu-latest) (push) Has been cancelled Details
Java CI / Test JDK ${{ matrix.java }}, ${{ matrix.os }} (8, ubuntu-latest) (push) Has been cancelled Details

* Add get multi level parent method.

* Add get multi level parent method.
This commit is contained in:
lingo-xp 2025-06-19 15:33:19 +08:00 committed by GitHub
parent d7d5d49686
commit a6498d1a2c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 35 additions and 0 deletions

View File

@ -37,6 +37,7 @@ public interface SQLObject {
SQLObject clone();
SQLObject getParent();
SQLObject getParent(int level);
void setParent(SQLObject parent);

View File

@ -108,6 +108,19 @@ public abstract class SQLObjectImpl implements SQLObject {
public SQLObject getParent() {
return parent;
}
public SQLObject getParent(int level) {
if (level <= 0) {
throw new IllegalArgumentException("Get parent level should be greater than 0.");
}
SQLObject parent = this;
while (level-- > 0) {
if (parent == null) {
return null;
}
parent = parent.getParent();
}
return parent;
}
public void setParent(SQLObject parent) {
this.parent = parent;

View File

@ -0,0 +1,21 @@
package com.alibaba.druid.bvt.sql;
import com.alibaba.druid.sql.ast.SQLObject;
import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
import org.junit.Assert;
import org.junit.Test;
public class GetParentTest {
@Test
public void test() {
SQLObject obj1 = new SQLIdentifierExpr("1");
SQLObject obj2 = new SQLIdentifierExpr("2");
obj2.setParent(obj1);
SQLObject obj3 = new SQLIdentifierExpr("3");
obj3.setParent(obj2);
Assert.assertEquals(obj2, obj3.getParent(1));
Assert.assertEquals(obj1, obj3.getParent(2));
Assert.assertNull(obj3.getParent(3));
Assert.assertNull(obj3.getParent(4));
}
}