Using Builder pattern for CoreModelParameters now
[Mograsim.git] / plugins / net.mograsim.logic.model / src / net / mograsim / logic / model / modeladapter / CoreModelParameters.java
index 96be5c2..6111e0b 100644 (file)
@@ -2,7 +2,51 @@ package net.mograsim.logic.model.modeladapter;
 
 public class CoreModelParameters
 {
-       public int wireTravelTime;
-       public int gateProcessTime;
-       public int hardcodedComponentProcessTime;
+       public final int wireTravelTime;
+       public final int gateProcessTime;
+       public final int hardcodedComponentProcessTime;
+
+       public CoreModelParameters(int wireTravelTime, int gateProcessTime, int hardcodedComponentProcessTime)
+       {
+               this.wireTravelTime = wireTravelTime;
+               this.gateProcessTime = gateProcessTime;
+               this.hardcodedComponentProcessTime = hardcodedComponentProcessTime;
+       }
+
+       private CoreModelParameters(CoreModelParametersBuilder builder)
+       {
+               this.wireTravelTime = builder.wireTravelTime;
+               this.gateProcessTime = builder.gateProcessTime;
+               this.hardcodedComponentProcessTime = builder.hardcodedComponentProcessTime;
+       }
+
+       public static class CoreModelParametersBuilder
+       {
+               public int wireTravelTime;
+               public int gateProcessTime;
+               public int hardcodedComponentProcessTime;
+
+               public CoreModelParametersBuilder wireTravelTime(int wireTravelTime)
+               {
+                       this.wireTravelTime = wireTravelTime;
+                       return this;
+               }
+
+               public CoreModelParametersBuilder gateProcessTime(int gateProcessTime)
+               {
+                       this.gateProcessTime = gateProcessTime;
+                       return this;
+               }
+
+               public CoreModelParametersBuilder hardcodedComponentProcessTime(int hardcodedComponentProcessTime)
+               {
+                       this.hardcodedComponentProcessTime = hardcodedComponentProcessTime;
+                       return this;
+               }
+
+               public CoreModelParameters build()
+               {
+                       return new CoreModelParameters(this);
+               }
+       }
 }
\ No newline at end of file