public class Nodemanage { private static Nodemanage nodemanage= new Nodemanage (); Private Nodemanage () {}//to use Singleton, so its construction method is privatized Provide an interface to the outside public static Nodemanage Getinstanse () { return nodemanage; } /** * Create tree * @param FilePath need to create the root directory of the tree directory */ public void CreateNode (String dir) { Session session = NULL; try { Session = Hibernateutils.getsession (); Session.begintransaction (); File root = new file (dir); Because the first node does not have a parent node because it is null This.savenode (root, session, NULL, 0); Session.gettransaction (). commit (); } catch (Hibernateexception e) { E.printstacktrace (); Session.gettransaction (). rollback (); } finally { Hibernateutils.closesession (session); } } /** * Save Node object to database * files corresponding to the @param file node * @param session session * @param Parent Parents node * @param level */ public void Savenode (file file, session session, Node parent, int. level) { if (file = = NULL | |!file.exists ()) { Return } Returns true if the file is a leaf node, otherwise a directory, non-leaf node Boolean isleaf = File.isfile (); Node node = new node (); Node.setname (File.getname ()); Node.setleaf (IsLeaf); Node.setlevel (level); Node.setparent (parent); Session.save (node); To iterate through subdirectories file[] Subfiles = File.listfiles (); if (subfiles! = null && subfiles.length > 0) { for (int i = 0; i < subfiles.length; i++) { This.savenode (Subfiles[i], Session, node, level + 1); } } } /** * Output tree structure * @param ID */ public void Printnodebyid (int id) { Session session = NULL; try { Session = Hibernateutils.getsession (); Session.begintransaction (); Node node = (node) session.get (Node.class, 1); Printnode (node); Session.gettransaction (). commit (); } catch (Hibernateexception e) { E.printstacktrace (); Session.gettransaction (). rollback (); } finally { Hibernateutils.closesession (session); } } private void Printnode (node node) { if (node = = null) { Return } int level = Node.getlevel (); if (Level > 0) { for (int i = 0; I < level; i++) { System.out.print ("|"); } System.out.print ("--"); } System.out.println (Node.getname () + (Node.isleaf ()? "": "[" + Node.getchildren (). Size () + "]"); Set children = Node.getchildren (); for (Iterator iter = Children.iterator (); Iter.hasnext ();) { Node child = (node) iter.next (); Printnode (child); } } } |