Преглед изворни кода

changes for saving between different os

Teh-Hai Julian Zheng пре 7 година
родитељ
комит
a2e6d3329b
2 измењених фајлова са 48 додато и 17 уклоњено
  1. 34 9
      src/ui/controller/LoadController.java
  2. 14 8
      src/ui/controller/SaveController.java

+ 34 - 9
src/ui/controller/LoadController.java

@@ -237,11 +237,19 @@ public class LoadController {
 			model.setObjectsOnCanvas(new ArrayList<AbstractCpsObject>());
 			model.setEdgesOnCanvas(new ArrayList<CpsEdge>());
 			model.setTrackingObj(new ArrayList<>());
+			model.setCanvasX(json.get("CANVAS_SIZE_X").getAsInt());
+			model.setCanvasX(json.get("CANVAS_SIZE_Y").getAsInt());
+			IdCounter.setCounter(json.get("IDCOUNTER").getAsInt());
+			IdCounterElem.setCounter(json.get("IDCOUNTERELEMENT").getAsInt());
 			break;
 		case PARTIAL:
 			model.setCvsObjIdx(new HashMap<Integer, Integer>());
 			model.setObjectsOnCanvas(new ArrayList<AbstractCpsObject>());
 			model.setEdgesOnCanvas(new ArrayList<CpsEdge>());
+			model.setCanvasX(json.get("CANVAS_SIZE_X").getAsInt());
+			model.setCanvasX(json.get("CANVAS_SIZE_Y").getAsInt());
+			IdCounter.setCounter(json.get("IDCOUNTER").getAsInt());
+			IdCounterElem.setCounter(json.get("IDCOUNTERELEMENT").getAsInt());
 			break;
 		case CATEGORY:
 			model.setCgIdx(new HashMap<String, Integer>());
@@ -250,10 +258,7 @@ public class LoadController {
 		default:
 			break;
 		}
-		model.setCanvasX(json.get("CANVAS_SIZE_X").getAsInt());
-		model.setCanvasX(json.get("CANVAS_SIZE_Y").getAsInt());
-		IdCounter.setCounter(json.get("IDCOUNTER").getAsInt());
-		IdCounterElem.setCounter(json.get("IDCOUNTERELEMENT").getAsInt());
+
 	}
 
 	/**
@@ -276,6 +281,7 @@ public class LoadController {
 		// TODO Auto-generated method stub
 
 		AbstractCpsObject temp = gson.fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
+		temp.setImage(checkOS(temp.getImage()));
 		initObjects(temp);
 		if (mpC.searchCatObj(mpC.searchCat(temp.getSav()), temp.getObjName()) != null)
 			cgC.deleteObject(temp.getSav(), temp.getObjName());
@@ -283,6 +289,13 @@ public class LoadController {
 
 	}
 
+	private String refreshPath(String image) {
+		// TODO Auto-generated method stub
+		if(!image.contains("/HolonGUI/"))
+			return image;
+		return (System.getProperty("user.home") + image.substring(image.indexOf("/HolonGUI/"), image.length())).replace("\\", "/");
+	}
+
 	/**
 	 * Load a given Element in Category by Deserialization
 	 * 
@@ -306,6 +319,7 @@ public class LoadController {
 		// TODO Auto-generated method stub
 		AbstractCpsObject temp = gson.fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
 		initObjects(temp);
+		temp.setImage(checkOS(temp.getImage()));
 		// if its stored before on the canvas just put it there
 		if (temp.getSav().equals("CVS")) {
 			cvsC.addObject(temp);
@@ -483,8 +497,8 @@ public class LoadController {
 
 		ArchiveEntry entry = stream.getNextEntry();
 		while (entry != null) {
-			String entryName = checkOS(entry.getName());
-			File file = new File(tmp, entryName);
+//			String entryName = checkOS(entry.getName());
+			File file = new File(tmp, entry.getName());
 			file.getParentFile().mkdirs();
 			OutputStream output = new FileOutputStream(file);
 			IOUtils.copy(stream, output);
@@ -503,17 +517,28 @@ public class LoadController {
 		// TODO Auto-generated method stub
 		String os = System.getProperty("os.name").toLowerCase();
 		String ret = entryName;
-		String partition = null;
+		String partition = System.getProperty("user.home");
+		
+		if(!ret.contains("HolonGUI"))
+			return ret;
 
 		if (os.contains("windows")) {
-			partition = System.getProperty("user.home").substring(0, entryName.indexOf(":"));
-			ret = partition + ret;
+			ret = ret.replace("/", "\\");
+			ret = System.getProperty("user.home") + ret.substring(ret.indexOf("\\HolonGUI\\"), ret.length());
+			
 		}
 		if (os.contains("mac")) {
 			//dosmth
+			ret = ret.replace("\\", "/");
+			ret = System.getProperty("user.home") + ret.substring(ret.indexOf("/HolonGUI/"), ret.length());
 		}
 		if (os.contains("linux")) {
 			//dosmth
+			ret = ret.replace("\\", "/");
+			ret = System.getProperty("user.home") + ret.substring(ret.indexOf("/HolonGUI/"), ret.length());
+		}
+		if(os.contains("solaris")) {
+			//dosmth
 		}
 		return ret;
 	}

+ 14 - 8
src/ui/controller/SaveController.java

@@ -178,19 +178,24 @@ public class SaveController {
 		switch (mode) {
 		case COMPLETE:
 			file.add("MODE", new JsonPrimitive(mode.name()));
+			file.add("IDCOUNTER", new JsonPrimitive(IdCounter.getCounter()));
+			file.add("IDCOUNTERELEMENT", new JsonPrimitive(IdCounterElem.getCounter()));
+			file.add("CANVAS_SIZE_X", new JsonPrimitive(model.getCanvasX()));
+			file.add("CANVAS_SIZE_Y", new JsonPrimitive(model.getCanvasY()));
 			break;
 		case PARTIAL:
 			file.add("MODE", new JsonPrimitive(mode.name()));
+			file.add("IDCOUNTER", new JsonPrimitive(IdCounter.getCounter()));
+			file.add("IDCOUNTERELEMENT", new JsonPrimitive(IdCounterElem.getCounter()));
+			file.add("CANVAS_SIZE_X", new JsonPrimitive(model.getCanvasX()));
+			file.add("CANVAS_SIZE_Y", new JsonPrimitive(model.getCanvasY()));
 			break;
 		case CATEGORY:
 			file.add("MODE", new JsonPrimitive(mode.name()));
 		default:
 			break;
 		}
-		file.add("IDCOUNTER", new JsonPrimitive(IdCounter.getCounter()));
-		file.add("IDCOUNTERELEMENT", new JsonPrimitive(IdCounterElem.getCounter()));
-		file.add("CANVAS_SIZE_X", new JsonPrimitive(model.getCanvasX()));
-		file.add("CANVAS_SIZE_Y", new JsonPrimitive(model.getCanvasY()));
+
 	}
 
 	/**
@@ -468,16 +473,17 @@ public class SaveController {
 		String partition = null;
 
 		if(os.contains("windows")) {
-			partition = entryName.substring(0, entryName.indexOf(":"));
-			ret =  entryName.replace(partition, "");
+			partition = entryName.substring(0, entryName.indexOf(":")+1);
+			ret = entryName.replace(partition, "");
+			ret = ret.replace(System.getProperty("user.home") + "\\HolonGUI\\", "");
 		}
 		if(os.contains("mac")) {
-			
+			ret = ret.replace(System.getProperty("user.home") + "/HolonGUI/", "");
 		}
 		if(os.contains("linux")) {
 			
 		}
-		return ret.replace(System.getProperty("user.home") + "/HolonGUI/", "");
+		return ret;
 	}
 
 	/**