mirror of https://github.com/alibaba/druid.git
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
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:
parent
d7d5d49686
commit
a6498d1a2c
|
@ -37,6 +37,7 @@ public interface SQLObject {
|
||||||
SQLObject clone();
|
SQLObject clone();
|
||||||
|
|
||||||
SQLObject getParent();
|
SQLObject getParent();
|
||||||
|
SQLObject getParent(int level);
|
||||||
|
|
||||||
void setParent(SQLObject parent);
|
void setParent(SQLObject parent);
|
||||||
|
|
||||||
|
|
|
@ -108,6 +108,19 @@ public abstract class SQLObjectImpl implements SQLObject {
|
||||||
public SQLObject getParent() {
|
public SQLObject getParent() {
|
||||||
return parent;
|
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) {
|
public void setParent(SQLObject parent) {
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
|
|
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue