/* getChildNode */ SELECT A.c_id , A.c_parentid , A.c_position , A.c_left , A.c_right , A.c_level , A.c_title , A.c_type /* user filed add point*/ , ( SELECT CASE WHEN COUNT(*) > 0 THEN 'InChild' ELSE 'NoChild' END AS YesNo /* inline table from filed add point*/ WHERE B.C_PARENTID = A.C_ID ) AS childcount /* table from filed add point*/ WHERE A.C_PARENTID = #c_id# ORDER BY A.C_POSITION ASC CREATE TABLE $c_title$( C_ID NUMBER NOT NULL, C_PARENTID NUMBER NOT NULL, C_POSITION NUMBER NOT NULL, C_LEFT NUMBER NOT NULL, C_RIGHT NUMBER NOT NULL, C_LEVEL NUMBER NOT NULL, C_TITLE VARCHAR2(4000 BYTE), C_TYPE VARCHAR2(4000 BYTE), CONSTRAINT $c_title$_PK PRIMARY KEY (C_ID) /* * CONSTRAINT T_ARMS_REQADD_FK1 FOREIGN KEY (OTHER_ID) REFERENCES OTHER T_ARMS_REQADD(C_ID) ON DELETE CASCADE */) COMMENT ON TABLE $c_title$ IS '기본 트리 스키마' COMMENT ON COLUMN $c_title$.C_ID IS '노드 아이디' COMMENT ON COLUMN $c_title$.C_PARENTID IS '부모 노드 아이디' COMMENT ON COLUMN $c_title$.C_POSITION IS '노드 포지션' COMMENT ON COLUMN $c_title$.C_LEFT IS '노드 좌측 끝 포인트' COMMENT ON COLUMN $c_title$.C_RIGHT IS '노드 우측 끝 포인트' COMMENT ON COLUMN $c_title$.C_LEVEL IS '노드 DEPTH ' COMMENT ON COLUMN $c_title$.C_TITLE IS '노드 명' COMMENT ON COLUMN $c_title$.C_TYPE IS '노드 타입' Insert into $c_title$ (C_ID, C_PARENTID, C_POSITION, C_LEFT, C_RIGHT, C_LEVEL, C_TITLE, C_TYPE) Values (1, 0, 0, 1, 8, 0, 'Root Node', 'root') Insert into $c_title$ (C_ID, C_PARENTID, C_POSITION, C_LEFT, C_RIGHT, C_LEVEL, C_TITLE, C_TYPE) Values (2, 1, 0, 2, 7, 1, 'First Child', 'drive') Insert into $c_title$ (C_ID, C_PARENTID, C_POSITION, C_LEFT, C_RIGHT, C_LEVEL, C_TITLE, C_TYPE) Values (3, 2, 0, 3, 4, 2, 'Leaf Node', 'default') Insert into $c_title$ (C_ID, C_PARENTID, C_POSITION, C_LEFT, C_RIGHT, C_LEVEL, C_TITLE, C_TYPE) Values (4, 2, 1, 5, 6, 2, 'Branch Node', 'folder') /* alterNode */ UPDATE T_COMPREHENSIVETREE_SPRING SET C_TYPE = #c_type# , C_TITLE = #c_title# WHERE C_ID = #c_id# /* removeNode */ DELETE FROM T_COMPREHENSIVETREE_SPRING WHERE C_LEFT >= #c_left# AND C_RIGHT <= #c_right# /* removedAfterLeftFix */ UPDATE T_COMPREHENSIVETREE_SPRING SET C_LEFT = C_LEFT - #spaceOfTargetNode# WHERE C_LEFT > #c_right# /* removedAfterRightFix */ UPDATE T_COMPREHENSIVETREE_SPRING SET C_RIGHT = C_RIGHT - #spaceOfTargetNode# WHERE C_RIGHT > #c_left# /* removedAfterPositionFix */ UPDATE T_COMPREHENSIVETREE_SPRING SET C_POSITION = C_POSITION - 1 WHERE C_PARENTID = #c_parentid# AND C_POSITION > #c_position# /* cutMyselfPositionFix moveNode case. parameterClass is nodeById*/ UPDATE T_COMPREHENSIVETREE_SPRING SET C_POSITION = C_POSITION - 1 WHERE C_PARENTID = #c_parentid# AND C_POSITION > #c_position# /* cutMyselfLeftFix moveNode case. parameterClass is nodeById*/ UPDATE T_COMPREHENSIVETREE_SPRING SET C_LEFT = C_LEFT - #spaceOfTargetNode# WHERE C_LEFT > #c_right# /* cutMyselfRightFix moveNode case. parameterClass is nodeById*/ UPDATE T_COMPREHENSIVETREE_SPRING SET C_RIGHT = C_RIGHT - #spaceOfTargetNode# WHERE C_RIGHT > #c_left# #c_idsByChildNodeFromNodeById[]# /* stretchPositionForMyselfFromJstree */ UPDATE T_COMPREHENSIVETREE_SPRING SET C_POSITION = C_POSITION + 1 WHERE C_PARENTID = #ref# AND C_POSITION >= #c_position# AND C_ID NOT IN (-1) #c_idsByChildNodeFromNodeById[]# /* stretchLeftForMyselfFromJstree */ UPDATE T_COMPREHENSIVETREE_SPRING SET C_LEFT = C_LEFT + #spaceOfTargetNode# WHERE C_LEFT >= #rightPositionFromNodeByRef# #c_idsByChildNodeFromNodeById[]# /* stretchRightForMyselfFromJstree */ UPDATE T_COMPREHENSIVETREE_SPRING SET C_RIGHT = C_RIGHT + #spaceOfTargetNode# WHERE C_RIGHT >= #rightPositionFromNodeByRef# #c_idsByChildNodeFromNodeById[]# /* pasteMyselfFromJstree */ INSERT INTO T_COMPREHENSIVETREE_SPRING ( C_ID, C_PARENTID, C_POSITION, C_LEFT, C_RIGHT, C_LEVEL, C_TITLE, C_TYPE ) SELECT S_COMPREHENSIVETREE_SPRING.NEXTVAL AS C_ID , A.* FROM ( SELECT #ref# AS C_PARENTID , C_POSITION , C_LEFT - #idifLeft# AS C_LEFT , C_RIGHT - #idifRight# AS C_RIGHT , C_LEVEL - #ldif# AS C_LEVEL , C_TITLE , C_TYPE FROM T_COMPREHENSIVETREE_SPRING #c_idsByChildNodeFromNodeById[]# ORDER BY C_LEVEL DESC ) A /* pasteMyselfFromJstree SEQ */ SELECT S_COMPREHENSIVETREE_SPRING.CURRVAL AS SEQ FROM DUAL /* enterMyselfFixPosition */ UPDATE T_COMPREHENSIVETREE_SPRING SET C_PARENTID = #ref# , C_POSITION = #c_position# WHERE C_ID = #c_id# /* enterMyselfFixLeftRight */ UPDATE T_COMPREHENSIVETREE_SPRING SET C_LEFT = C_LEFT - (#idif#) , C_RIGHT = C_RIGHT - (#idif#) , C_LEVEL = C_LEVEL - (#ldif#) #c_idsByChildNodeFromNodeById[]# /* addMyselfFromJstree */ INSERT INTO T_COMPREHENSIVETREE_SPRING ( C_ID, C_PARENTID, C_POSITION, C_LEFT, C_RIGHT, C_LEVEL ) VALUES ( S_COMPREHENSIVETREE_SPRING.NEXTVAL, #c_parentid#, #c_position#, #c_left#, #c_right#, #c_level# ) /* addMyselfFromJstree SEQ */ SELECT S_COMPREHENSIVETREE_SPRING.CURRVAL AS SEQ FROM DUAL /* alterNodeType */ UPDATE T_COMPREHENSIVETREE_SPRING SET C_TYPE = #c_type# WHERE C_ID = #c_id# /* fixCopyIF */ UPDATE T_COMPREHENSIVETREE_SPRING SET C_POSITION = #fixCopyPosition# WHERE C_ID = #fixCopyId# /* fixCopy */ UPDATE T_COMPREHENSIVETREE_SPRING SET C_PARENTID = #fixCopyId# WHERE C_ID = #c_id# SELECT COUNT(*) FROM ( ) SELECT * FROM ( SELECT ROWNUM AS RN , DATA.* FROM ( ) DATA ) WHERE RN BETWEEN #firstIndex# + 1 AND #firstIndex# + #recordCountPerPage# FROM T_COMPREHENSIVETREE_SPRING A WHERE C_LEFT > #c_left# AND C_RIGHT < #c_right# AND C_LEVEL = #c_level#