Skip to content

Commit 982bf16

Browse files
author
Open Lowcode SAS
committed
Close #264 Close #261
1 parent 9988964 commit 982bf16

File tree

10 files changed

+81
-41
lines changed

10 files changed

+81
-41
lines changed

src/org/openlowcode/client/action/CPageInlineAction.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.openlowcode.tools.structure.DataElt;
2626
import org.openlowcode.tools.structure.DataEltType;
2727
import org.openlowcode.tools.structure.MultipleChoiceDataElt;
28+
import org.openlowcode.tools.structure.ObjectDataElt;
2829
import org.openlowcode.tools.structure.ObjectIdDataElt;
2930
import org.openlowcode.tools.structure.ObjectIdDataEltType;
3031
import org.openlowcode.tools.structure.TextDataElt;
@@ -116,6 +117,11 @@ public CActionData getDataContent(CPage page) {
116117
result.addActionAttribute(new ObjectIdDataElt(thisbusinessdataloc.getName()));
117118
}
118119

120+
if (thisbusinessdataloc.getType().equals("OBJ")) {
121+
treated=true;
122+
result.addActionAttribute(new ObjectDataElt(thisbusinessdataloc.getName()));
123+
}
124+
119125
if (thisbusinessdataloc.getType().startsWith("ARR")) {
120126
String subtype = thisbusinessdataloc.getType().substring(4);
121127
if (subtype.compareTo(CActionDataLoc.CHOICE_TYPE) == 0) {

src/org/openlowcode/client/graphic/CPageData.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public void processInlineAction(String module, String name, CPageData newdata) {
113113
throw new RuntimeException("Name in trigggered inline action is null ");
114114

115115
if ((currentref.getModule().compareTo(module) == 0) && (currentref.getName().compareTo(name) == 0)) {
116-
LOGGER.finer("found one match for action");
116+
LOGGER.finer("found one match for action for module "+module+", action "+name+" index = "+i);
117117
DataElt dataelt = newdata.getDataElement(currentref.getFieldorder());
118118
Platform.runLater(new Runnable() {
119119

src/org/openlowcode/client/graphic/widget/CFieldSearcher.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.io.IOException;
1414
import java.util.ArrayList;
1515
import java.util.Iterator;
16+
import java.util.logging.Logger;
1617

1718
import org.openlowcode.tools.messages.MessageReader;
1819
import org.openlowcode.tools.messages.OLcRemoteException;
@@ -36,6 +37,7 @@
3637
import org.openlowcode.tools.structure.SimpleDataElt;
3738
import org.openlowcode.tools.structure.TextDataElt;
3839
import org.openlowcode.tools.structure.TextDataEltType;
40+
3941
import javafx.scene.input.KeyCode;
4042
import javafx.scene.input.KeyEvent;
4143
import javafx.scene.input.MouseEvent;
@@ -97,6 +99,7 @@ public class CFieldSearcher
9799
private CPageInlineAction inlineenirichaction;
98100
private Tooltip searchtooltip;
99101

102+
private static Logger logger = Logger.getLogger(CFieldSearcher.class.getName());
100103
/**
101104
* creates the CFieldSearcher from a message from the server
102105
*
@@ -228,10 +231,14 @@ public void handle(KeyEvent keyevent) {
228231
ButtonHandler buttonhandler = new ButtonHandler(actionmanager);
229232
bottombutton.setOnMouseClicked(buttonhandler);
230233
}
231-
if (inlineenirichaction != null)
234+
if (inlineenirichaction != null) {
232235
actionmanager.registerInlineAction(resultlist, inlineenirichaction);
233-
if (actionaftersearch != null)
236+
logger.finer(" --> CFieldSearcher adding inline enrich action "+inlineenirichaction.getModule()+"/"+inlineenirichaction.getName());
237+
}
238+
if (actionaftersearch != null) {
234239
actionmanager.registerEvent(resultlist, actionaftersearch);
240+
logger.finer(" --> CFieldSearcher add action after search "+actionaftersearch.getModule()+"/"+actionaftersearch.getName());
241+
}
235242
resultlist.addEventHandler(ActionEvent.ACTION, actionmanager);
236243
resultlist.setOnMouseClicked(new EventHandler<MouseEvent>() {
237244

@@ -301,12 +308,13 @@ public DataElt getDataElt(DataEltType type, String eltname, String objectdataloc
301308
@SuppressWarnings("unchecked")
302309
@Override
303310
public void forceUpdateData(DataElt dataelt) {
304-
311+
logger.finer(" --> gets data element in the CFieldSearcher");
305312
if (!(dataelt instanceof ArrayDataElt))
306313
throw new RuntimeException(
307314
String.format("inline page data does not have expected %s type, actually found %s",
308315
dataelt.getName(), dataelt.getType()));
309316
data = (ArrayDataElt<ObjectDataElt>) dataelt;
317+
logger.finer("--> got an array with "+data.getObjectNumber()+" elements");
310318
ArrayList<String> itemstoshow = new ArrayList<String>();
311319
for (int i = 0; i < data.getObjectNumber(); i++) {
312320
ObjectDataElt thisobject = data.getObjectAtIndex(i);

src/org/openlowcode/client/graphic/widget/CObjectArrayField.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ public Node getNode(
178178
Window parentwindow,
179179
TabPane[] parenttabpanes,
180180
CollapsibleNode nodetocollapsewhenactiontriggered) {
181-
logger.fine("built node CObjectArrayField " + this.name);
181+
logger.finer("built node CObjectArrayField " + this.name);
182182
this.actionmanager = actionmanager;
183183
if (this.inlinefeeding) {
184184
inputdata.addInlineActionDataRef(this.feedinginlineactionoutputdata);
@@ -280,13 +280,20 @@ public void forceUpdateData(DataElt dataelt) {
280280
boolean treated = false;
281281
if (dataelt instanceof ArrayDataElt) {
282282
thiselementarray = (ArrayDataElt<ObjectDataElt>) dataelt;
283+
logger.severe("--> putting an array of "+thiselementarray.getObjectNumber()+" elements ");
284+
283285
refreshDisplay();
284286
treated = true;
285287
}
286288
if (dataelt instanceof ObjectDataElt) {
287289

288290
ObjectDataElt element = (ObjectDataElt) dataelt;
289-
if (this.keeponlyone) if (thiselementarray.getObjectNumber()==1) thiselementarray.removeObjectAtIndex(0);
291+
if (this.keeponlyone) if (thiselementarray.getObjectNumber()==1) {
292+
logger.finer("--> cleaning object "+thiselementarray.getObjectAtIndex(0).getUID()+ " - "+element.toString());
293+
thiselementarray.removeObjectAtIndex(0);
294+
295+
}
296+
logger.finer("--> adding object "+element.getUID()+ " - "+element.toString()+" number of elements before = "+thiselementarray.getObjectNumber());
290297
thiselementarray.addElement(element.deepcopy(thiselementarray.getName()));
291298

292299
refreshDisplay();
@@ -317,7 +324,7 @@ public void handle(MouseEvent mouseevent) {
317324
}
318325

319326
private void refreshDisplay() {
320-
logger.fine("Refresh CObjectArrayField " + this.name);
327+
logger.finer("Refresh CObjectArrayField " + this.name);
321328

322329
datapane.getChildren().clear();
323330
CBusinessField<?> selectedfield = null;
@@ -367,7 +374,7 @@ private void refreshDisplay() {
367374

368375
objectbutton.setOnMousePressed(new ObjectArrayFieldMouseEvent(i));
369376

370-
logger.fine("Add objectbutton " + buttontitle);
377+
logger.finer("Add objectbutton " + buttontitle);
371378
datapane.getChildren().add(objectbutton);
372379

373380
}

src/org/openlowcode/design/data/DataObjectDefinition.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2560,7 +2560,7 @@ private void addAttributesToCreateobject(
25602560
if (addlinks) for (int i = 0; i < object.propertylist.getSize(); i++) {
25612561
Property<?> property = object.propertylist.get(i);
25622562
if (property instanceof LeftForLink) {
2563-
LeftForLink leftforlink = (LeftForLink) property;
2563+
LeftForLink<?,?> leftforlink = (LeftForLink<?,?>) property;
25642564
if (leftforlink.getLinkObjectProperty().getBusinessRuleByName("DISPLAYASATTRIBUTEFROMLEFT") != null) {
25652565
action.addInputArgument(new ArrayArgument(
25662566
new ObjectArgument("LEFT" + leftforlink.getLinkObjectDefinition().getName(),

src/org/openlowcode/design/data/DataObjectDefinitionCreatePageToFile.java

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,6 @@
3030
import org.openlowcode.design.generation.StringFormatter;
3131
import org.openlowcode.design.module.Module;
3232
import org.openlowcode.design.pages.SearchWidgetDefinition;
33-
import org.openlowcode.module.designer.data.Dataobjectdef;
34-
import org.openlowcode.server.action.SInlineEchoActionRef;
35-
import org.openlowcode.server.data.message.TObjectDataEltType;
36-
3733
/**
3834
* Generation of the creation page for a Data Object
3935
*
@@ -147,13 +143,13 @@ public void generateToFile(SourceGenerator sg, Module module) throws IOException
147143
for (int i = 0; i < leftlinkedproperties.size(); i++) {
148144
LeftForLink<?, ?> leftlinkedproperty = leftlinkedproperties.get(i);
149145
DataObjectDefinition linkobject = leftlinkedproperty.getLinkObjectDefinition();
146+
@SuppressWarnings("unused")
150147
String linkobjectclass = StringFormatter.formatForJavaClass(linkobject.getName());
151148
String linkobjectvariable = StringFormatter.formatForAttribute(linkobject.getName());
152149
String rightobjectvariable = StringFormatter
153150
.formatForAttribute(leftlinkedproperty.getRightObjectForLink().getName());
154151
String rightobjectclass = StringFormatter
155152
.formatForJavaClass(leftlinkedproperty.getRightObjectForLink().getName());
156-
@SuppressWarnings("rawtypes")
157153
DisplayLinkAsAttributeFromLeftObject<
158154
?, ?> attributeasleft = (DisplayLinkAsAttributeFromLeftObject) leftlinkedproperty
159155
.getLinkObjectProperty().getBusinessRuleByName("DISPLAYASATTRIBUTEFROMLEFT");
@@ -549,14 +545,11 @@ public void generateToFile(SourceGenerator sg, Module module) throws IOException
549545
.formatForAttribute(leftlinkedproperty.getRightObjectForLink().getName());
550546
String rightobjectclass = StringFormatter
551547
.formatForJavaClass(leftlinkedproperty.getRightObjectForLink().getName());
552-
@SuppressWarnings("rawtypes")
553548
DisplayLinkAsAttributeFromLeftObject<
554549
?, ?> attributeasleft = (DisplayLinkAsAttributeFromLeftObject) leftlinkedproperty
555550
.getLinkObjectProperty().getBusinessRuleByName("DISPLAYASATTRIBUTEFROMLEFT");
556-
557551
if (attributeasleft != null) {
558552
Typed typed = (Typed) leftlinkedproperty.getParent().getPropertyByName("TYPED");
559-
@SuppressWarnings("rawtypes")
560553
ConstraintOnLinkTypeRestrictionForLeft typerestrictionforleft = (ConstraintOnLinkTypeRestrictionForLeft) leftlinkedproperty
561554
.getLinkObjectProperty().getBusinessRuleByName("TYPERESTRICTIONFORLEFT");
562555
sg.wl("// ---------------- Display " + linkobjectclass + " as object array field -------------------");
@@ -586,7 +579,8 @@ public void generateToFile(SourceGenerator sg, Module module) throws IOException
586579

587580
sg.wl(" mainband.addElement(left" + linkobjectvariable + "s);");
588581
}
589-
582+
if (leftlinkedproperty.isUniqueLinkFromLeft()) sg.wl(" left" + linkobjectvariable
583+
+ "s.setKeepOnlyOne(); ");
590584
sg.wl(" ");
591585

592586

@@ -657,9 +651,6 @@ public void generateToFile(SourceGenerator sg, Module module) throws IOException
657651
}
658652
sg.wl(" }, left" + linkobjectvariable + "nodes.toArray(new SPageNode[0]));");
659653

660-
sg.wl(" left" + linkobjectvariable + "s.addFeedingInlineAction(addtoleft"
661-
+ linkobjectvariable + "ssearchaction,addtoleft" + linkobjectvariable
662-
+ "s_resultechoaction.getOutputActionDataRef());");
663654

664655
}
665656
sg.wl(" create" + pagename + "actionref.setLeft" + linkobjectvariable + "(left"

src/org/openlowcode/design/data/DataObjectDefinitionSearchPagesAndActions.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ private void generateArgumentsForLinkSecondaryObjects(
9797
for (int i=0;i<sideobject.getPropertySize();i++) {
9898
Property<?> thisproperty = sideobject.getPropertyAt(i);
9999
if (thisproperty instanceof LinkedToParent) {
100-
LinkedToParent linkedtoparent = (LinkedToParent) thisproperty;
100+
LinkedToParent<?> linkedtoparent = (LinkedToParent<?>) thisproperty;
101101
ObjectIdArgument parentidargument = new ObjectIdArgument("LINKEDTOPARENTFOR"+linkedtoparent.getInstancename()+"ID",linkedtoparent.getParentObjectForLink());
102102
parentidargument.setOptional(true);
103103
searchactionforrightobjectlink.addInputArgument(parentidargument);
@@ -112,7 +112,7 @@ private void generateSideAttributesArgumentsForAction(DataObjectDefinition objec
112112
for (int i=0;i<object.getPropertySize();i++) {
113113
Property<?> thisproperty = object.getPropertyAt(i);
114114
if (thisproperty instanceof LinkedToParent) {
115-
LinkedToParent linkedtoparent = (LinkedToParent) thisproperty;
115+
LinkedToParent<?> linkedtoparent = (LinkedToParent<?>) thisproperty;
116116
String name = ("LINKEDTOPARENTFOR"+linkedtoparent.getInstancename()+"ID").toLowerCase();
117117
sg.w(", DataObjectId<"+StringFormatter.formatForJavaClass(linkedtoparent.getParentObjectForLink().getName())+"> "+name+" ");
118118

src/org/openlowcode/design/data/DataObjectDefinitionShowPage.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1520,7 +1520,7 @@ public void generateToFile(SourceGenerator sg, Module module) throws IOException
15201520
Property<?> thisproperty = leftlinkedproperty.getRightObjectForLink().getPropertyAt(j);
15211521
if (thisproperty instanceof LinkedToParent) {
15221522
LinkedToParent<?> rightobjectlinkedtoparent = (LinkedToParent<?>) thisproperty;
1523-
LinkedToParent<?> leftobjectlinkedtoparent = this.getLeftLinkedToParent(
1523+
LinkedToParent<?> leftobjectlinkedtoparent = DataObjectDefinitionShowPage.getLeftLinkedToParent(
15241524
leftlinkedproperty.getLinkObjectProperty(), rightobjectlinkedtoparent);
15251525
sg.wl(" createlinkandrightobjectfor" + linkobjectvariable
15261526
+ ".setLinkedtoparentfor"
@@ -1552,6 +1552,12 @@ public void generateToFile(SourceGenerator sg, Module module) throws IOException
15521552
+ "(null);");
15531553
sg.wl(" addtoleft" + linkobjectvariable + "ssearchaction.setNr(addtoleft"
15541554
+ linkobjectvariable + "ssearcher.getSearchTextInput());");
1555+
for (int j=0;j<this.dataobject.getPropertySize();j++) {
1556+
if (dataobject.getPropertyAt(j) instanceof LinkedToParent) {
1557+
LinkedToParent<?> parent = (LinkedToParent<?>) dataobject.getPropertyAt(j);
1558+
sg.wl(" addtoleft" + linkobjectvariable + "ssearchaction.setLinkedtoparentfor"+parent.getInstancename().toLowerCase()+"id(null);");
1559+
}
1560+
}
15551561
for (int j = 0; j < leftlinkedproperty.getRightObjectForLink().getSearchWidgets().length; j++) {
15561562
SearchWidgetDefinition searchwidget = leftlinkedproperty.getRightObjectForLink()
15571563
.getSearchWidgets()[j];

src/org/openlowcode/design/data/properties/basic/LeftForLink.java

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.openlowcode.design.data.DataObjectDefinition;
2020
import org.openlowcode.design.data.MethodAdditionalProcessing;
2121
import org.openlowcode.design.data.Property;
22+
import org.openlowcode.design.data.PropertyBusinessRule;
2223
import org.openlowcode.design.data.PropertyGenerics;
2324
import org.openlowcode.design.data.argument.ObjectIdArgument;
2425
import org.openlowcode.design.generation.SourceGenerator;
@@ -297,8 +298,8 @@ public class LinkFromLeftTableWidget
297298
super("LINKFROMLEFTTABLE");
298299
this.parentproperty = parentproperty;
299300
typed = (Typed) this.parentproperty.getParent().getPropertyByName("TYPED");
300-
typerestrictionforleft = (ConstraintOnLinkTypeRestrictionForLeft) parentproperty
301-
.getLinkObjectProperty().getBusinessRuleByName("TYPERESTRICTIONFORLEFT");
301+
typerestrictionforleft = (ConstraintOnLinkTypeRestrictionForLeft) parentproperty.getLinkObjectProperty()
302+
.getBusinessRuleByName("TYPERESTRICTIONFORLEFT");
302303
}
303304

304305
@Override
@@ -310,7 +311,7 @@ public String[] getImportStatements() {
310311
importstatements.add("import org.openlowcode.server.graphic.widget.SObjectArrayField;");
311312
importstatements.add("import org.openlowcode.server.graphic.widget.SObjectSearcher;");
312313
importstatements.add("import org.openlowcode.server.graphic.widget.SPopupButton;");
313-
if (typerestrictionforleft!=null) {
314+
if (typerestrictionforleft != null) {
314315
importstatements.add("import java.util.ArrayList;");
315316
}
316317
String linkobjectvariable = StringFormatter
@@ -365,16 +366,17 @@ public void generateWidgetCode(
365366
sg.wl(" // Display " + linkobjectclass);
366367
sg.wl(" // ------------------------------------------------------------------------------------------");
367368
sg.wl("");
368-
if (this.typerestrictionforleft!=null) {
369-
sg.wl(" ArrayList<SPageNode> left" + linkobjectvariable + "nodes = new ArrayList<SPageNode>();");
369+
if (this.typerestrictionforleft != null) {
370+
sg.wl(" ArrayList<SPageNode> left" + linkobjectvariable
371+
+ "nodes = new ArrayList<SPageNode>();");
370372
sg.wl(" left" + linkobjectvariable + "nodes.add(new SPageText(\""
371373
+ parentproperty.getLinkObjectProperty().getLabelFromLeft()
372374
+ "\",SPageText.TYPE_TITLE,this));");
373375
} else {
374-
375-
sg.wl(" " + locationname + ".addElement(new SPageText(\""
376-
+ parentproperty.getLinkObjectProperty().getLabelFromLeft()
377-
+ "\",SPageText.TYPE_TITLE,this));");
376+
377+
sg.wl(" " + locationname + ".addElement(new SPageText(\""
378+
+ parentproperty.getLinkObjectProperty().getLabelFromLeft()
379+
+ "\",SPageText.TYPE_TITLE,this));");
378380
}
379381
sg.wl(" SObjectArray<" + linkobjectclass + "> left" + linkobjectvariable + "s = new SObjectArray<"
380382
+ linkobjectclass + ">(\"LEFT" + linkobjectclass.toUpperCase() + "\",");
@@ -497,26 +499,27 @@ public void generateWidgetCode(
497499
+ ", this);");
498500
sg.wl(" left" + linkobjectvariable + "buttonbar.addElement(deleteoneofleft" + linkobjectvariable
499501
+ "button);");
500-
if (this.typerestrictionforleft!=null) {
502+
if (this.typerestrictionforleft != null) {
501503
sg.wl(" left" + linkobjectvariable + "nodes.add(left" + linkobjectvariable + "buttonbar);");
502504
sg.wl(" left" + linkobjectvariable + "nodes.add(left" + linkobjectvariable + "s);");
503505
ChoiceValue[] allowedtypes = this.typerestrictionforleft.getAllowedTypes();
504-
506+
505507
sg.wl(" mainband.addConditionalElements(this.getTypechoice(),");
506508
sg.wl(" new ChoiceValue[] { ");
507-
for (int t=0;t<allowedtypes.length;t++) {
509+
for (int t = 0; t < allowedtypes.length; t++) {
508510
;
509-
sg.wl(" "+(t>0?",":"")+StringFormatter.formatForJavaClass(this.typed.getTypes().getName())+"ChoiceDefinition.get()."+allowedtypes[t].getName());
511+
sg.wl(" " + (t > 0 ? "," : "")
512+
+ StringFormatter.formatForJavaClass(this.typed.getTypes().getName())
513+
+ "ChoiceDefinition.get()." + allowedtypes[t].getName());
510514
}
511515
sg.wl(" }, left" + linkobjectvariable + "nodes.toArray(new SPageNode[0]));");
512516

513-
514517
} else {
515518
sg.wl(" " + locationname + ".addElement(left" + linkobjectvariable + "buttonbar);");
516519
sg.wl(" " + locationname + ".addElement(left" + linkobjectvariable + "s);");
517-
520+
518521
}
519-
} else {
522+
} else {
520523
// -------------------------------------------------------------------------------------------------
521524
// show link as field array
522525
}
@@ -529,4 +532,23 @@ public WidgetDisplayPriority getWidgetPriority() {
529532
}
530533

531534
}
535+
536+
/**
537+
* utility method telling is the link is unique for left, restricting widgets
538+
* when needed in (especially in creation page)
539+
*
540+
* @return
541+
*/
542+
public boolean isUniqueLinkFromLeft() {
543+
LinkObject<?, ?> linkobject = this.getLinkObjectProperty();
544+
for (int i = 0; i < linkobject.getBusinessRuleNumber(); i++) {
545+
PropertyBusinessRule<?> businessrule = linkobject.getBusinessRule(i);
546+
if (businessrule instanceof ConstraintOnLinkMaxOneFromLeft)
547+
return true;
548+
if (businessrule instanceof ConstraintOnLinkUniqueForLeftAndRight)
549+
return true;
550+
}
551+
return false;
552+
}
553+
532554
}

src/org/openlowcode/design/module/Module.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2270,7 +2270,7 @@ public static void main(String args[]) {
22702270
} catch (Throwable e) {
22712271
errormodules.add(classpath + " - " + e.getMessage() + "\n - " + e.getStackTrace()[0] + "\n - "
22722272
+ (e.getStackTrace().length > 1 ? e.getStackTrace()[1] : ""));
2273-
logger.severe("Exception " + e.getMessage());
2273+
logger.severe("Exception "+e.getClass().toString()+" - " + e.getMessage());
22742274
for (int s = 0; s < e.getStackTrace().length; s++) {
22752275
logger.severe(" - " + e.getStackTrace()[s].toString());
22762276
}

0 commit comments

Comments
 (0)