📄 utils.java
字号:
ZipEntry entry = (ZipEntry) e.nextElement(); String entryname = entry.getName(); // entry must end with '.properties' if (entryname.indexOf(LANG_PROP_PREFIX) != -1 && entryname.endsWith(".properties")) { pfs.add(entryname); } } catch (Exception ex) { } } } catch (Exception ex) { ex.printStackTrace(); } } // if there are no property files, try to find the default ones distributed // with JaWE if (pfs.size() == 0) { u = Utils.class.getClassLoader() .getResource("org/enhydra/jawe/language/JaWE.properties"); if (u != null) { pfs.add("JaWE.properties"); } u = Utils.class.getClassLoader() .getResource("org/enhydra/jawe/language/JaWE_de.properties"); if (u != null) { pfs.add("JaWE_de.properties"); } u = Utils.class.getClassLoader() .getResource("org/enhydra/jawe/language/JaWE_fr.properties"); if (u != null) { pfs.add("JaWE_fr.properties"); } u = Utils.class.getClassLoader() .getResource("org/enhydra/jawe/language/JaWE_sh.properties"); if (u != null) { pfs.add("JaWE_sh.properties"); } u = Utils.class.getClassLoader() .getResource("org/enhydra/jawe/language/JaWE_es.properties"); if (u != null) { pfs.add("JaWE_es.properties"); } u = Utils.class.getClassLoader() .getResource("org/enhydra/jawe/language/JaWE_pt.properties"); if (u != null) { pfs.add("JaWE_pt.properties"); } } java.util.List pfLocales = new ArrayList(); if (pfs.size() > 0) { // adding default locale (for default property file) pfLocales.add(new PFLocale()); for (int i = 0; i < pfs.size(); i++) { String propFile = (String) pfs.get(i); int p1 = propFile.indexOf(LANG_PROP_PREFIX) + LANG_PROP_PREFIX.length(); boolean isDefault = !propFile.substring(p1, p1 + 1).equals("_"); if (!isDefault) { PFLocale pfl = PFLocale.createPFLocale(propFile.substring(p1 + 1, propFile.length() - ".properties".length())); if (pfl != null) { pfLocales.add(pfl); } } } } return pfLocales; } public static void copyFile(String src, String dest) { try { FileChannel sourceChannel = new FileInputStream(src).getChannel(); FileChannel destinationChannel = new FileOutputStream(dest).getChannel(); // Copy source file to destination file destinationChannel.transferFrom(sourceChannel, 0, sourceChannel.size()); sourceChannel.close(); destinationChannel.close(); } catch (Exception ex) { ex.printStackTrace(); } } public static void showEAS(ExtendedAttributes el) { System.err.println("ExtendedAttributes, el = " + el + ", there are " + el.size() + " eas"); Iterator it = el.toElements().iterator(); while (it.hasNext()) { System.err.println(); Utils.showEA((ExtendedAttribute) it.next()); } } public static void showEA(ExtendedAttribute el) { System.err.println("ExtendedAttribute, el = " + el); System.err.println("ExtendedAttribute.name), el = " + el.get("Name")); System.err.println("ExtendedAttribute.value), el = " + el.get("Value")); System.err.println(); } /** Gets the current date and time string in ISO-8601 format. */ public static String getCurrentDateAndTime() { String dateSeparator = "-"; String timeSeparator = ":"; Calendar cal = new GregorianCalendar(); String dateTime = ""; dateTime = dateTime + String.valueOf(cal.get(Calendar.YEAR)) + dateSeparator; int mnth = cal.get(Calendar.MONTH) + 1; if (mnth < 10) { dateTime = dateTime + "0"; } dateTime = dateTime + String.valueOf(mnth) + dateSeparator; int dayOfMnth = cal.get(Calendar.DAY_OF_MONTH); if (dayOfMnth < 10) { dateTime = dateTime + "0"; } dateTime = dateTime + String.valueOf(dayOfMnth) + " "; int hr = cal.get(Calendar.HOUR_OF_DAY); int ampm = cal.get(Calendar.AM_PM); if (ampm == Calendar.PM && hr < 12) { hr += 12; } if (hr < 10) { dateTime = dateTime + "0"; } dateTime = dateTime + String.valueOf(hr) + timeSeparator; int min = cal.get(Calendar.MINUTE); if (min < 10) { dateTime = dateTime + "0"; } dateTime = dateTime + String.valueOf(min) + timeSeparator; int sec = cal.get(Calendar.SECOND); if (sec < 10) { dateTime = dateTime + "0"; } dateTime = dateTime + String.valueOf(sec); return dateTime; } public static String getActivityStringType(int activityType) { String retVal = ""; switch (activityType) { case XPDLConstants.ACTIVITY_TYPE_NO: retVal = JaWEConstants.ACTIVITY_TYPE_NO; break; case XPDLConstants.ACTIVITY_TYPE_TOOL: retVal = JaWEConstants.ACTIVITY_TYPE_TOOL; break; case XPDLConstants.ACTIVITY_TYPE_BLOCK: retVal = JaWEConstants.ACTIVITY_TYPE_BLOCK; break; case XPDLConstants.ACTIVITY_TYPE_ROUTE: retVal = JaWEConstants.ACTIVITY_TYPE_ROUTE; break; case XPDLConstants.ACTIVITY_TYPE_SUBFLOW: retVal = JaWEConstants.ACTIVITY_TYPE_SUBFLOW; break; } return retVal; } public static List sortValidationErrorList(List verrs) { List sorted = new ArrayList(); Map epves = JaWEManager.getInstance() .getXPDLValidator() .getExtPkgValidationErrors(); Iterator it = epves.values().iterator(); while (it.hasNext()) { List l = (List) it.next(); verrs.removeAll(l); } sorted.addAll(Utils.sortValidationErrorList(verrs, JaWEManager.getInstance() .getJaWEController() .getMainPackage())); it = epves.entrySet().iterator(); while (it.hasNext()) { Map.Entry me = (Map.Entry) it.next(); Package p = (Package) me.getKey(); List l = (List) me.getValue(); sorted.addAll(Utils.sortValidationErrorList(l, p)); } return sorted; } public static List sortValidationErrorList(List verrs, Package p) { List sorted = new ArrayList(); sorted.addAll(findErrorList(verrs, Package.class, XMLValidationError.SUB_TYPE_SCHEMA)); sorted.addAll(findErrorList(verrs, p, XMLValidationError.SUB_TYPE_LOGIC)); sorted.addAll(findErrorListParent(verrs, p)); sorted.addAll(findErrorListParent(verrs, p.getTypeDeclarations())); sorted.addAll(findErrorListParent(verrs, p.getApplications())); sorted.addAll(findErrorListParent(verrs, p.getParticipants())); sorted.addAll(findErrorListParent(verrs, p.getDataFields())); Iterator it = p.getApplications().toElements().iterator(); while (it.hasNext()) { Application app = (Application) it.next(); sorted.addAll(findErrorListParent(verrs, app.getApplicationTypes() .getFormalParameters())); } it = p.getWorkflowProcesses().toElements().iterator(); while (it.hasNext()) { WorkflowProcess wp = (WorkflowProcess) it.next(); sorted.addAll(findErrorList(verrs, wp)); } it = p.getWorkflowProcesses().toElements().iterator(); while (it.hasNext()) { WorkflowProcess wp = (WorkflowProcess) it.next(); Iterator it2 = wp.getActivitySets().toElements().iterator(); while (it2.hasNext()) { ActivitySet as = (ActivitySet) it2.next(); sorted.addAll(findErrorList(verrs, as)); } } it = p.getWorkflowProcesses().toElements().iterator(); while (it.hasNext()) { WorkflowProcess wp = (WorkflowProcess) it.next(); sorted.addAll(findErrorListParent(verrs, wp.getApplications())); sorted.addAll(findErrorListParent(verrs, wp.getParticipants())); sorted.addAll(findErrorListParent(verrs, wp.getDataFields())); sorted.addAll(findErrorListParent(verrs, wp.getFormalParameters())); Iterator it2 = wp.getApplications().toElements().iterator(); while (it2.hasNext()) { Application app = (Application) it2.next(); sorted.addAll(findErrorListParent(verrs, app.getApplicationTypes() .getFormalParameters())); } it2 = wp.getActivitySets().toElements().iterator(); while (it2.hasNext()) { ActivitySet as = (ActivitySet) it2.next(); Iterator it3 = as.getActivities().toElements().iterator(); while (it3.hasNext()) { Activity act = (Activity) it3.next(); sorted.addAll(findErrorList(verrs, act)); } it3 = as.getTransitions().toElements().iterator(); while (it3.hasNext()) { Transition tra = (Transition) it3.next(); sorted.addAll(findErrorList(verrs, tra)); } } it2 = wp.getActivities().toElements().iterator(); while (it2.hasNext()) { Activity act = (Activity) it2.next(); sorted.addAll(findErrorList(verrs, act)); } it2 = wp.getTransitions().toElements().iterator(); while (it2.hasNext()) { Transition tra = (Transition) it2.next(); sorted.addAll(findErrorList(verrs, tra)); } } verrs.removeAll(sorted); sorted.addAll(verrs); return sorted; } public static List findErrorList(List allErrs, Object obj, String validationType) { List toRet = new ArrayList(); for (int i = 0; i < allErrs.size(); i++) { ValidationError verr = (ValidationError) allErrs.get(i); if (verr.getSubType().equals(validationType) && verr.getElement() == obj) { toRet.add(verr); } } return toRet; } public static List findErrorList(List allErrs, Object obj) { List toRet = new ArrayList(); for (int i = 0; i < allErrs.size(); i++) { ValidationError verr = (ValidationError) allErrs.get(i); if (verr.getElement() == obj) { toRet.add(verr); } } return toRet; } public static List findErrorList(List allErrs, Class objClass) { List toRet = new ArrayList(); for (int i = 0; i < allErrs.size(); i++) { ValidationError verr = (ValidationError) allErrs.get(i); if (verr.getElement().getClass() == objClass) { toRet.add(verr); } } return toRet; } public static List findErrorList(List allErrs, Class objClass, String validationType) { List toRet = new ArrayList(); for (int i = 0; i < allErrs.size(); i++) { ValidationError verr = (ValidationError) allErrs.get(i); if (verr.getSubType().equals(validationType) && verr.getElement().getClass() == objClass) { toRet.add(verr); } } return toRet; } public static List findErrorListParent(List allErrs, Object parentObj) { List toRet = new ArrayList(); for (int i = 0; i < allErrs.size(); i++) { ValidationError verr = (ValidationError) allErrs.get(i); if (verr.getElement().getParent() == parentObj) { toRet.add(verr); } } return toRet; } public static int countErrors(List verrs) { int errs = 0; for (int i = 0; i < verrs.size(); i++) { ValidationError verr = (ValidationError) verrs.get(i); if (verr.getType().equalsIgnoreCase(XMLValidationError.TYPE_ERROR)) { errs++; } } return errs; } /** * Java doesn't support direct opening of arbitrary documents, but this hack should do * it. For Windows executing "start", and for KDE "kfmclient exec" will open document * with associated application. Associations are of course system dependant, and we * cannot do anything about them. */ public static boolean showExternalDocument(String document) { if (!(new File(document).canRead())) { return false; } String startCommand = System.getProperty("path.to.start"); if (null != startCommand) { if (!new File(startCommand).canRead()) { return false; } if (System.getProperty("path.separator").equals(";")) { document = "\"" + document + "\""; } } else { if (System.getProperty("path.separator").equals(":")) { startCommand = "kfmclient exec"; } else { startCommand = "cmd /c start"; document = "\"" + document + "\"" + " \"" + document + "\""; } } try { Runtime.getRuntime().exec(startCommand + " " + document); } catch (Throwable t) { t.printStackTrace(); return false; } return true; } public static XMLElement getLocation(XMLElement el) { XMLElement location = XMLUtil.getActivity(el); if (location == null) { location = XMLUtil.getTransition(el); } if (location == null) { location = XMLUtil.getTransition(el); } if (location == null) { location = XMLUtil.getParentElement(TypeDeclaration.class, el); } if (location == null) { location = XMLUtil.getParentElement(FormalParameter.class, el); } if (location == null) { location = XMLUtil.getParentElement(Application.class, el); } if (location == null) { location = XMLUtil.getParentElement(Participant.class, el); } if (location == null) { location = XMLUtil.getParentElement(DataField.class, el); } ActivitySet as = XMLUtil.getActivitySet(el); if (location == null) { location = as; } WorkflowProcess wp = XMLUtil.getWorkflowProcess(el); if (location == null) { location = wp; } Package pkg = XMLUtil.getPackage(el); if (location == null) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -