Skip to content

Commit 4985731

Browse files
committed
Merge branch 'kh/builders-of-mobile-base' of [email protected]:CommonWealthRobotics/bowler-script-kernel.git into kh/builders-of-mobile-base
2 parents d8d920a + 350c437 commit 4985731

20 files changed

+66
-41
lines changed

src/main/java/com/neuronrobotics/bowlerstudio/scripting/CaDoodleLoader.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,17 @@ public class CaDoodleLoader implements IScriptingLanguage {
2222
@Override
2323
public Object inlineScriptRun(File code, ArrayList<Object> args) throws Exception {
2424
CaDoodleFile loaded = CaDoodleFile.fromFile(code);
25-
return process(loaded);
25+
Object process = process(loaded);
26+
loaded.close();
27+
return process;
2628
}
2729

2830
@Override
2931
public Object inlineScriptRun(String code, ArrayList<Object> args) throws Exception {
3032
CaDoodleFile loaded = CaDoodleFile.fromJsonString(code);
31-
return process(loaded);
33+
Object process = process(loaded);
34+
loaded.close();
35+
return process;
3236
}
3337

3438
public static Object process(CaDoodleFile loaded) {

src/main/java/com/neuronrobotics/bowlerstudio/scripting/cadoodle/AbstractAddFrom.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import com.google.gson.annotations.Expose;
1010

11-
public abstract class AbstractAddFrom implements ICaDoodleOpperation {
11+
public abstract class AbstractAddFrom extends AbstractCaDoodleFileAccepter{
1212
@Expose (serialize = false, deserialize = false)
1313
protected HashSet<String> namesAdded = new HashSet<>();
1414
@Expose (serialize = false, deserialize = false)
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.neuronrobotics.bowlerstudio.scripting.cadoodle;
2+
3+
public abstract class AbstractCaDoodleFileAccepter implements ICaDoodleOpperation{
4+
private CaDoodleFile cf = null;
5+
6+
public CaDoodleFile getCaDoodleFile() {
7+
return cf;
8+
}
9+
10+
public void setCaDoodleFile(CaDoodleFile cf) {
11+
this.cf = cf;
12+
}
13+
14+
}

src/main/java/com/neuronrobotics/bowlerstudio/scripting/cadoodle/AddFromFile.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import eu.mihosoft.vrl.v3d.parametrics.CSGDatabaseInstance;
2929
import eu.mihosoft.vrl.v3d.parametrics.StringParameter;
3030

31-
public class AddFromFile extends AbstractAddFrom implements ICaDoodleOpperation {
31+
public class AddFromFile extends AbstractAddFrom {
3232
@Expose(serialize = true, deserialize = true)
3333
private TransformNR location = null;
3434
private ArrayList<String> options = new ArrayList<String>();

src/main/java/com/neuronrobotics/bowlerstudio/scripting/cadoodle/AddFromScript.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import eu.mihosoft.vrl.v3d.parametrics.CSGDatabase;
2222
import eu.mihosoft.vrl.v3d.parametrics.CSGDatabaseInstance;
2323

24-
public class AddFromScript extends AbstractAddFrom implements ICaDoodleOpperation {
24+
public class AddFromScript extends AbstractAddFrom {
2525
@Expose(serialize = true, deserialize = true)
2626
private String gitULR = "";
2727
@Expose(serialize = true, deserialize = true)

src/main/java/com/neuronrobotics/bowlerstudio/scripting/cadoodle/Allign.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import eu.mihosoft.vrl.v3d.CSG;
1414
import eu.mihosoft.vrl.v3d.Transform;
1515

16-
public class Allign implements ICaDoodleOpperation {
16+
public class Allign extends AbstractCaDoodleFileAccepter{
1717
@Expose (serialize = true, deserialize = true)
1818
private List<String> names = new ArrayList<String>();
1919
@Expose (serialize = true, deserialize = true)

src/main/java/com/neuronrobotics/bowlerstudio/scripting/cadoodle/CaDoodleFile.java

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
public class CaDoodleFile {
5656
public static final String NO_NAME = "NoName";
5757
@Expose(serialize = true, deserialize = true)
58-
private ArrayList<ICaDoodleOpperation> opperations = new ArrayList<ICaDoodleOpperation>();
58+
private ArrayList<AbstractCaDoodleFileAccepter> opperations = new ArrayList<AbstractCaDoodleFileAccepter>();
5959
@Expose(serialize = true, deserialize = true)
6060
private int currentIndex = 0;
6161
@Expose(serialize = true, deserialize = true)
@@ -65,24 +65,23 @@ public class CaDoodleFile {
6565
@Expose(serialize = true, deserialize = true)
6666
private TransformNR rulerLocation = new TransformNR();
6767
@Expose(serialize = true, deserialize = true)
68+
69+
// Non Serialised private variables
6870
private TransformNR workplane = new TransformNR();
69-
@Expose(serialize = false, deserialize = false)
7071
private File selfInternal;
7172
// @Expose (serialize = false, deserialize = false)
7273
// private List<CSG> currentState = new ArrayList<CSG>();
73-
@Expose(serialize = false, deserialize = false)
7474
private double percentInitialized = 0;
75-
@Expose(serialize = false, deserialize = false)
76-
private HashMap<ICaDoodleOpperation, List<CSG>> cache = new HashMap<ICaDoodleOpperation, List<CSG>>();
75+
private final HashMap<AbstractCaDoodleFileAccepter, List<CSG>> cache = new HashMap<AbstractCaDoodleFileAccepter, List<CSG>>();
7776
private static Type TT_CaDoodleFile = new TypeToken<CaDoodleFile>() {
7877
}.getType();
7978
private static Gson gson = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting()
8079
.excludeFieldsWithoutExposeAnnotation().registerTypeAdapterFactory(new ICaDoodleOperationAdapterFactory())
8180
.create();
82-
private ArrayList<ICaDoodleStateUpdate> listeners = new ArrayList<ICaDoodleStateUpdate>();
81+
private final ArrayList<ICaDoodleStateUpdate> listeners = new ArrayList<ICaDoodleStateUpdate>();
8382
private final ArrayList<Thread> opperationRunner = new ArrayList<Thread>();
8483
private boolean regenerating;
85-
private CopyOnWriteArrayList<ICaDoodleOpperation> toProcess = new CopyOnWriteArrayList<ICaDoodleOpperation>();
84+
private final CopyOnWriteArrayList<AbstractCaDoodleFileAccepter> toProcess = new CopyOnWriteArrayList<AbstractCaDoodleFileAccepter>();
8685
private javafx.scene.image.WritableImage img;
8786
private boolean initializing;
8887
private static HashMap<String, VitaminBomManager> bomManagers = new HashMap<>();
@@ -100,18 +99,20 @@ public void renderSplashFrame(int percent, String message) {
10099
private boolean timelineOpen = false;
101100

102101
public void close() {
102+
//new Exception("CaDoodle File Closed here").printStackTrace();
103+
for(AbstractCaDoodleFileAccepter op:getOpperations()) {
104+
op.setCaDoodleFile(null);
105+
}
103106
for (ICaDoodleOpperation op : cache.keySet()) {
104107
cache.get(op).clear();
105108
}
106109
cache.clear();
107-
cache = null;
108110
clearListeners();
109-
listeners = null;
110111
toProcess.clear();
111-
toProcess = null;
112112
img = null;
113113
for (Thread t : opperationRunner)
114114
t.interrupt();
115+
115116
}
116117

117118
public CaDoodleFile clearListeners() {
@@ -158,7 +159,7 @@ public void initialize() {
158159
if (indexStarting > opperations.size())
159160
indexStarting = opperations.size();
160161
for (int i = 0; i < getOpperations().size(); i++) {
161-
ICaDoodleOpperation op = getOpperations().get(i);
162+
AbstractCaDoodleFileAccepter op = getOpperations().get(i);
162163
if (op == null)
163164
continue;
164165
setPercentInitialized(((double) i) / (double) getOpperations().size());
@@ -245,6 +246,8 @@ public Thread regenerateFrom(ICaDoodleOpperation source) {
245246
// .printStackTrace();
246247
}
247248
Thread t = null;
249+
CaDoodleFile cf = this;
250+
248251
t = new Thread() {
249252
public void run() {
250253
this.setName("Regeneration Threads");
@@ -270,11 +273,12 @@ public void run() {
270273
setPercentInitialized(((double) getCurrentIndex()) / size);
271274
// com.neuronrobotics.sdk.common.Log.error("Regenerating "+currentIndex);
272275
int currentIndex2 = getCurrentIndex() - 1;
273-
ICaDoodleOpperation op = getOpperations().get(currentIndex2);
276+
AbstractCaDoodleFileAccepter op = getOpperations().get(currentIndex2);
274277
getSaveUpdate().renderSplashFrame(percent,
275278
"Regenerating " + op.getType() + " " + currentIndex2);
276279
getTimelineImageFile(op).delete();
277280
try {
281+
op.setCaDoodleFile(cf);
278282
List<CSG> process = op.process(getPreviouState());
279283
storeResultInCache(op, process);
280284
setCurrentState(op, process);
@@ -318,6 +322,7 @@ public Thread regenerateCurrent() {
318322
}
319323
fireRegenerateStart();
320324
Thread t = null;
325+
CaDoodleFile cf = this;
321326
t = new Thread() {
322327
public void run() {
323328
timeOfLastUpdate = System.currentTimeMillis();
@@ -326,8 +331,9 @@ public void run() {
326331

327332
this.setName("regenerateCurrent Thread");
328333

329-
ICaDoodleOpperation op = getCurrentOpperation();
334+
AbstractCaDoodleFileAccepter op = getCurrentOpperation();
330335
TickToc.tic("Start regenerate");
336+
op.setCaDoodleFile(cf);
331337
List<CSG> process = op.process(getPreviouState());
332338
TickToc.tic("Finish regenerate");
333339
int currentIndex2 = getCurrentIndex();
@@ -350,7 +356,8 @@ public void run() {
350356

351357
}
352358

353-
private void process(ICaDoodleOpperation op) {
359+
private void process(AbstractCaDoodleFileAccepter op) {
360+
op.setCaDoodleFile(this);
354361
List<CSG> process = op.process(getCurrentState());
355362
int currentIndex2 = getCurrentIndex();
356363
storeResultInCache(op, process);
@@ -377,7 +384,7 @@ public boolean isOperationRunning() {
377384
return false;
378385
}
379386

380-
public Thread addOpperation(ICaDoodleOpperation o) throws CadoodleConcurrencyException {
387+
public Thread addOpperation(AbstractCaDoodleFileAccepter o) throws CadoodleConcurrencyException {
381388
if (o == null)
382389
throw new NullPointerException();
383390
toProcess.add(o);
@@ -393,7 +400,7 @@ public void run() {
393400
while (toProcess.size() > 0) {
394401
result = OperationResult.APPEND;
395402
this.setName("addOpperation Thread " + toProcess.size());
396-
ICaDoodleOpperation op = toProcess.remove(0);
403+
AbstractCaDoodleFileAccepter op = toProcess.remove(0);
397404
if (getCurrentIndex() != getOpperations().size()) {
398405
try {
399406
fireRegenerateStart();
@@ -578,9 +585,9 @@ private OperationResult pruneForward(ICaDoodleOpperation op) throws Exception {
578585
imageCache.delete();
579586
}
580587
if (res == OperationResult.PRUNE) {
581-
List<ICaDoodleOpperation> subList = (List<ICaDoodleOpperation>) getOpperations().subList(0,
588+
List<AbstractCaDoodleFileAccepter> subList = (List<AbstractCaDoodleFileAccepter>) getOpperations().subList(0,
582589
getCurrentIndex());
583-
ArrayList<ICaDoodleOpperation> newList = new ArrayList<ICaDoodleOpperation>();
590+
ArrayList<AbstractCaDoodleFileAccepter> newList = new ArrayList<AbstractCaDoodleFileAccepter>();
584591
newList.addAll(subList);
585592
setOpperations(newList);
586593
com.neuronrobotics.sdk.common.Log.error("Pruning forward here!");
@@ -589,7 +596,7 @@ private OperationResult pruneForward(ICaDoodleOpperation op) throws Exception {
589596
return res;
590597
}
591598

592-
private void storeResultInCache(ICaDoodleOpperation op, List<CSG> process) {
599+
private void storeResultInCache(AbstractCaDoodleFileAccepter op, List<CSG> process) {
593600
ArrayList<CSG> cachedCopy = new ArrayList<CSG>();
594601
HashSet<String> names = new HashSet<>();
595602
for (CSG c : process) {
@@ -678,7 +685,7 @@ private void updateCurrentFromCache() {
678685
setCurrentState(key, getCurrentState());
679686
}
680687

681-
public ICaDoodleOpperation getCurrentOpperation() {
688+
public AbstractCaDoodleFileAccepter getCurrentOpperation() {
682689
if (getCurrentIndex() == 0)
683690
return null;
684691
return getOpperations().get(getCurrentIndex() - 1);
@@ -1039,11 +1046,11 @@ public static CaDoodleFile fromFile(File f, ICaDoodleStateUpdate listener, boole
10391046
return file;
10401047
}
10411048

1042-
public ArrayList<ICaDoodleOpperation> getOpperations() {
1049+
public ArrayList<AbstractCaDoodleFileAccepter> getOpperations() {
10431050
return opperations;
10441051
}
10451052

1046-
public void setOpperations(ArrayList<ICaDoodleOpperation> opperations) {
1053+
public void setOpperations(ArrayList<AbstractCaDoodleFileAccepter> opperations) {
10471054
this.opperations = opperations;
10481055
currentIndex = opperations.size();
10491056
}

src/main/java/com/neuronrobotics/bowlerstudio/scripting/cadoodle/Delete.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
import eu.mihosoft.vrl.v3d.CSG;
1515

16-
public class Delete implements ICaDoodleOpperation {
16+
public class Delete extends AbstractCaDoodleFileAccepter {
1717
@Expose(serialize = true, deserialize = true)
1818
private TransformNR location = new TransformNR();
1919
@Expose(serialize = true, deserialize = true)

src/main/java/com/neuronrobotics/bowlerstudio/scripting/cadoodle/Group.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import eu.mihosoft.vrl.v3d.parametrics.IParametric;
1313
import javafx.scene.paint.Color;
1414

15-
public class Group extends AbstractAddFrom implements ICaDoodleOpperation {
15+
public class Group extends AbstractAddFrom {
1616
@Expose(serialize = true, deserialize = true)
1717
private List<String> names = new ArrayList<String>();
1818
@Expose(serialize = true, deserialize = true)

src/main/java/com/neuronrobotics/bowlerstudio/scripting/cadoodle/Hide.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import eu.mihosoft.vrl.v3d.CSG;
99

10-
public class Hide implements ICaDoodleOpperation {
10+
public class Hide extends AbstractCaDoodleFileAccepter{
1111
@Expose (serialize = true, deserialize = true)
1212
private List<String> names = new ArrayList<String>();
1313
@Override

0 commit comments

Comments
 (0)