Browse Source

autosave fix

jess 7 years ago
parent
commit
880140e900

+ 29 - 15
src/ui/controller/AutoSaveController.java

@@ -4,30 +4,44 @@ import ui.model.Model;
 
 public class AutoSaveController {
 	private Model MODEL;
+	private int max = Integer.MAX_VALUE;
 	private int numberOfSaves = 20;
-	private int autoSaveNr, tmp = 0;
+	private int currentSave;
+	private int count = 0;
+	private boolean isAllowed = false;
+
 	public AutoSaveController(Model model) {
 		this.MODEL = model;
 	}
-	
-	public void increaseAutoSaveNr(){
-		 autoSaveNr = MODEL.getAutoSaveNr()+1;
-		 tmp = MODEL.getAutoSaveNr();
-		if(autoSaveNr > numberOfSaves){
-			autoSaveNr = 0;
+
+	public void increaseAutoSaveNr() {
+		currentSave = MODEL.getAutoSaveNr() + 1;
+		if (count < currentSave) {
+			count = currentSave;
+		}
+		if (numberOfSaves == count) {
+			isAllowed = true;
 		}
-		MODEL.setAutoSaveNr(autoSaveNr);
+		if (currentSave > max) {
+			currentSave = 0;
+		}
+
+		MODEL.setAutoSaveNr(currentSave);
 	}
-	
+
 	public void decreaseAutoSaveNr() {
-		 autoSaveNr = MODEL.getAutoSaveNr()-1;
-		if(autoSaveNr < 0){
-			autoSaveNr = numberOfSaves;
+		currentSave = MODEL.getAutoSaveNr() - 1;
+		if (currentSave < 0) {
+			currentSave = max;
 		}
-		MODEL.setAutoSaveNr(autoSaveNr);
+		MODEL.setAutoSaveNr(currentSave);
 	}
-	
-	public int getAutoSaveNr(){
+
+	public int getAutoSaveNr() {
 		return MODEL.getAutoSaveNr();
 	}
+
+	public boolean allowed() {
+		return isAllowed;
+	}
 }

+ 3 - 0
src/ui/controller/Control.java

@@ -215,6 +215,9 @@ public class Control {
 	private void autoSave() throws IOException {
 		autoSaveController.increaseAutoSaveNr();
 		storeController.writeCanvasFile(autoPath + autoSaveController.getAutoSaveNr());
+		if(autoSaveController.allowed()){
+			new File(autoPath + (autoSaveController.getAutoSaveNr()-globalController.getNumbersOfSaves())).delete();
+		}
 	}
 
 	public String getUndoSave() {

+ 18 - 0
src/ui/controller/GlobalController.java

@@ -45,5 +45,23 @@ public class GlobalController {
 	public void setCurIteration(int cur_it) {
 		MODEL.setCurIteration(cur_it);
 	}
+	
+	/**
+	 * Returns numberOfSaves
+	 * 
+	 * @return numberOfSaves
+	 */
+	public int getNumbersOfSaves(){
+		return MODEL.getNumberOfSaves();
+	}
+	
+	/**
+	 * sets the max number of autosaves
+	 * 
+	 * @param numberOfSaves, the max number of autosaves
+	 */
+	public void setNumberOfSaves(int numberOfSaves){
+		MODEL.setNumberOfSaves(numberOfSaves);;
+	}
 
 }

+ 17 - 0
src/ui/model/Model.java

@@ -28,7 +28,10 @@ public class Model {
 	private ArrayList<CpsObject> selectedObjects = new ArrayList<CpsObject>();
 
 	private int selectedID = 0;
+	// number of the current autosave
 	private int autoSaveNr = -1;
+	// number of max simultaneous autosaves 
+	private int numberOfSaves = 35;
 	// eventuell wenn Canvasgröße gewählt werden kann
 	private int HEIGHT;
 	private int WIDTH;
@@ -330,4 +333,18 @@ public class Model {
 		return autoSaveNr;
 	}
 
+	/**
+	 * @return the numberOfSaves
+	 */
+	public int getNumberOfSaves() {
+		return numberOfSaves;
+	}
+
+	/**
+	 * @param numberOfSaves the numberOfSaves to set
+	 */
+	public void setNumberOfSaves(int numberOfSaves) {
+		this.numberOfSaves = numberOfSaves;
+	}
+
 }

+ 5 - 0
src/ui/view/GUI.java

@@ -240,6 +240,7 @@ public class GUI<E> implements CategoryListener {
 							files[i].delete();
 						}
 					}
+					path.delete();
 				}
 			}
 		});
@@ -273,6 +274,7 @@ public class GUI<E> implements CategoryListener {
 							unitGraph.fillArrayofBooleans();
 						}
 					}
+					unitGraph.empty();
 				} catch (IOException f) {
 					// TODO Auto-generated catch block
 					f.printStackTrace();
@@ -303,6 +305,7 @@ public class GUI<E> implements CategoryListener {
 							unitGraph.fillArrayofBooleans();
 						}
 					}
+					unitGraph.empty();
 				} catch (IOException f) {
 					// TODO Auto-generated catch block
 					f.printStackTrace();
@@ -1201,6 +1204,7 @@ public class GUI<E> implements CategoryListener {
 							unitGraph.fillArrayofBooleans();
 						}
 					}
+					unitGraph.empty();
 				} catch (IOException e) {
 					// TODO Auto-generated catch block
 					e.printStackTrace();
@@ -1236,6 +1240,7 @@ public class GUI<E> implements CategoryListener {
 							unitGraph.fillArrayofBooleans();
 						}
 					}
+					unitGraph.empty();
 				} catch (IOException e) {
 					// TODO Auto-generated catch block
 					e.printStackTrace();