private DbJVClass importClass(JavaClass claz, Controller controller) throws DbException { String packName = claz.getPackageName(); String qualifiedName = claz.getClassName(); int idx = qualifiedName.lastIndexOf('.'); String classname = qualifiedName.substring(idx + 1); DbJVClass dbClaz = null; try { if (m_classModel != null) { DbJVPackage pack = findPackageByName(packName); // create class or interface int value = claz.isInterface() ? JVClassCategory.INTERFACE : JVClassCategory.CLASS; JVClassCategory catg = JVClassCategory.getInstance(value); dbClaz = (pack == null) ? new DbJVClass(this.m_classModel, catg) : new DbJVClass(pack, catg); dbClaz.setName(classname); // set class modifiers dbClaz.setAbstract(claz.isAbstract()); dbClaz.setFinal(claz.isFinal()); dbClaz.setStatic(claz.isStatic()); dbClaz.setStrictfp(claz.isStrictfp()); dbClaz.setVisibility(toVisibility(claz)); // create inheritances importInheritances(dbClaz, claz); // create fields if (m_params.createFields) { Field[] fields = claz.getFields(); for (Field field : fields) { importField(dbClaz, field); } } // create methods if (m_params.createMethods) { Method[] methods = claz.getMethods(); for (Method method : methods) { importMethod(dbClaz, method); } } // keep user informed of progression String pattern = LocaleMgr.misc.getString("0SuccessfullyCreated"); String msg = MessageFormat.format(pattern, qualifiedName); controller.println(msg); } // end if } catch (DbException ex) { controller.println(ex.toString()); } // end try return dbClaz; } // end importClass()
@Override protected void runJob() throws Exception { Controller controller = getController(); // is invoked head less? DefaultMainFrame mainFrame = ApplicationContext.getDefaultMainFrame(); boolean headless = (mainFrame == null); Db db = null; try { if (!headless) { // create new project, if it was not specific by the user m_project = m_params.getOutputProject(); if (m_project == null) { m_project = (DbSMSProject) mainFrame.createDefaultProject(db); } db = m_project.getDb(); db.beginWriteTrans(LocaleMgr.misc.getString("ImportJavaBytecode")); // create class model m_classModel = new DbJVClassModel(m_project); } // import Java classes files (jobDone 0% to 80%) DbJVPackage topMostPackage = importFiles(controller, 0, 80); // show success/failure message if (controller.getErrorsCount() == 0) { controller.println(LocaleMgr.misc.getString("Success")); } else { controller.println(LocaleMgr.misc.getString("Failed")); } // end if // create and reveal diagram ((jobDone 80% to 100%) if (!headless) { if ((topMostPackage != null) && (m_params.createDiagrams)) { createAndRevealDiagram(mainFrame, topMostPackage, controller, 80, 100); } db.commitTrans(); } // end if controller.checkPoint(100); } catch (DbException ex) { controller.println(ex.toString()); controller.cancel(); } // end try } // end runJob()