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 getParent();
|
||||
SQLObject getParent(int level);
|
||||
|
||||
void setParent(SQLObject parent);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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