public static void templateChild( FormInstance dm, String prefixPath, TreeReference parent, Restorable r) { TreeReference childRef = (prefixPath == null ? parent : RestoreUtils.childRef(prefixPath, parent)); childRef = childRef(r.getRestorableType(), childRef); templateData(r, dm, childRef); }
public static FormInstance createDataModel(Restorable r) { FormInstance dm = newDataModel(r.getRestorableType()); if (r instanceof Persistable) { addData(dm, RECORD_ID_TAG, new Integer(((Persistable) r).getID())); } return dm; }
public static void importRMS(FormInstance dm, IStorageUtility storage, Class type, String path) { if (!Externalizable.class.isAssignableFrom(type) || !Restorable.class.isAssignableFrom(type)) { return; } boolean idMatters = Persistable.class.isAssignableFrom(type); String childName = ((Restorable) PrototypeFactory.getInstance(type)).getRestorableType(); TreeElement e = dm.resolveReference(absRef(path, dm)); Vector children = e.getChildrenWithName(childName); for (int i = 0; i < children.size(); i++) { FormInstance child = subDataModel((TreeElement) children.elementAt(i)); Restorable inst = (Restorable) PrototypeFactory.getInstance(type); // restore record id first so 'importData' has access to it int recID = -1; if (idMatters) { recID = ((Integer) getValue(RECORD_ID_TAG, child)).intValue(); ((Persistable) inst).setID(recID); } inst.importData(child); try { if (idMatters) { storage.write((Persistable) inst); } else { storage.add((Externalizable) inst); } } catch (Exception ex) { throw new RuntimeException( "Error importing RMS during restore! [" + type.getName() + ":" + recID + "]; " + ex.getMessage()); } } }
public static void templateData(Restorable r, FormInstance dm, TreeReference parent) { if (parent == null) { parent = topRef(dm); applyDataType(dm, "timestamp", parent, Date.class); } if (r instanceof Persistable) { applyDataType(dm, RECORD_ID_TAG, parent, Integer.class); } r.templateData(dm, parent); }