[Bprocessor-commit] model/src/net/sourceforge/bprocessor/model Persistence.java, 1.10, 1.11
Status: Pre-Alpha
Brought to you by:
henryml
From: rimestad <rim...@us...> - 2006-10-10 14:04:48
|
Update of /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv6739/src/net/sourceforge/bprocessor/model Modified Files: Persistence.java Log Message: Some way in the impl. of modellor to xml but not all so dont use load save (that is undo as well) when using modellors it will crash Index: Persistence.java =================================================================== RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Persistence.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** Persistence.java 9 Oct 2006 08:49:21 -0000 1.10 --- Persistence.java 10 Oct 2006 14:04:45 -0000 1.11 *************** *** 7,11 **** package net.sourceforge.bprocessor.model; ! import net.sourceforge.bprocessor.model.xml.Bmodel; import net.sourceforge.bprocessor.model.xml.ConstructorType; --- 7,11 ---- package net.sourceforge.bprocessor.model; ! import net.sourceforge.bprocessor.model.modellor.Modellor; import net.sourceforge.bprocessor.model.xml.Bmodel; import net.sourceforge.bprocessor.model.xml.ConstructorType; *************** *** 13,20 **** --- 13,24 ---- import net.sourceforge.bprocessor.model.xml.EdgeType; import net.sourceforge.bprocessor.model.xml.EntityType; + import net.sourceforge.bprocessor.model.xml.IntegerType; import net.sourceforge.bprocessor.model.xml.LineType; + import net.sourceforge.bprocessor.model.xml.MapElementType; import net.sourceforge.bprocessor.model.xml.MaterialType; + import net.sourceforge.bprocessor.model.xml.ModellorType; import net.sourceforge.bprocessor.model.xml.PointType; import net.sourceforge.bprocessor.model.xml.SpaceType; + import net.sourceforge.bprocessor.model.xml.StringType; import net.sourceforge.bprocessor.model.xml.SurfaceType; import net.sourceforge.bprocessor.model.xml.VertexType; *************** *** 23,28 **** --- 27,35 ---- import net.sourceforge.bprocessor.model.xml.impl.CoordinateSystemTypeImpl; import net.sourceforge.bprocessor.model.xml.impl.EdgeImpl; + import net.sourceforge.bprocessor.model.xml.impl.IntegerTypeImpl; import net.sourceforge.bprocessor.model.xml.impl.LineTypeImpl; + import net.sourceforge.bprocessor.model.xml.impl.MapElementTypeImpl; import net.sourceforge.bprocessor.model.xml.impl.MaterialImpl; + import net.sourceforge.bprocessor.model.xml.impl.ModellorTypeImpl; import net.sourceforge.bprocessor.model.xml.impl.PointTypeImpl; import net.sourceforge.bprocessor.model.xml.impl.SpaceImpl; *************** *** 138,141 **** --- 145,150 ---- space.setClassification(xml.getClassification()); mapper.put(new Long(xml.getId()), space); + space.setModellor(internalizeModellor(xml.getModellor())); + xmls.add(xml); { *************** *** 206,209 **** --- 215,258 ---- } + /** + * Internalize the modellor + * @param xml the xml version of the modellor + * @return the model modellor + */ + private static Modellor internalizeModellor(ModellorType xml) { + if (xml != null) { + Class model; + try { + model = Class.forName(xml.getTy()); + } catch (ClassNotFoundException cnf) { + log.error("Internalization of modellor failed for :" + xml.getTy() + + " \nBecause of " + cnf.toString()); + return null; + } + try { + Modellor m = (Modellor)model.getConstructor(new Class[0]).newInstance(new Object[0]); + HashMap content = new HashMap(); + Iterator iter = xml.getAttribute().iterator(); + while (iter.hasNext()) { + MapElementType elem = (MapElementType)iter.next(); + Object val = elem.getValue(); + if (val instanceof IntegerType) { + content.put(elem.getKey(), elem.getValue()); + } else if (val instanceof StringType) { + content.put(elem.getKey(), elem.getValue()); + } else { + log.warn("Non supported type"); + } + } + m.setContent(content); + return m; + } catch (Exception e) { + log.error("Modellor were missing empty constructor " + e.getMessage()); + return null; + } + } else { + return null; + } + } /** *************** *** 523,526 **** --- 572,608 ---- /** + * Save the modellor + * @param m the modellor to save + * @param map The map + * @return The xml object + */ + private static ModellorType externalizeModellor(Modellor m, Map map) { + ModellorType xml = new ModellorTypeImpl(); + xml.setId(counter++); + if (m.getId() != null) { + xml.setProgid(m.getId().longValue()); + } + xml.setTy(m.getClass().getName()); + List att = xml.getAttribute(); + Map cont = m.getContent(); + if (cont != null) { + Iterator iter = map.entrySet().iterator(); + while (iter.hasNext()) { + Map.Entry o = (Map.Entry)iter.next(); + MapElementType elem = new MapElementTypeImpl(); + elem.setKey((String)o.getKey()); + Object val = o.getValue(); + if (val instanceof Integer) { + IntegerType t = new IntegerTypeImpl(); + t.setInteger(((Integer)val).intValue()); + elem.setValue(t); + } + att.add(elem); + } + } + return xml; + } + + /** * Create an xml SpaceImpl and place it in the map * @param space The space *************** *** 537,540 **** --- 619,625 ---- xml.setDescription(space.getDescription().toString()); xml.setClassification(space.getClassification().toString()); + if (space.getModellor() != null) { + xml.setModellor(externalizeModellor(space.getModellor(), map)); + } map.put(space, xml); |