From 95209f06df72e865285f1ecceecbb9e06f2e10f5 Mon Sep 17 00:00:00 2001 From: Rodolfo Totaro Date: Fri, 6 Jan 2017 15:01:24 +0100 Subject: [PATCH] #190 In progress TqCL - syntax (insert) and library services --- .../api/services/ActorDescriptor.java | 14 +- .../api/services/DirectorDescriptor.java | 4 +- .../api/services/EntityDescriptor.java | 25 +++- .../api/services/ParameterDescriptor.java | 26 ++++ .../commands/api/services/PortDescriptor.java | 19 +++ .../api/services/TqCLLibraryProvider.java | 2 +- .../impl/TcQLLibraryProviderProxy.java | 6 + .../contentassist/TqclProposalProvider.java | 137 ++++++++++-------- .../commands/ui/.TqclUiModule.xtendbin | Bin 2042 -> 2042 bytes .../.TqclDescriptionLabelProvider.xtendbin | Bin 1873 -> 1873 bytes .../ui/labeling/.TqclLabelProvider.xtendbin | Bin 2316 -> 2316 bytes .../outline/.TqclOutlineTreeProvider.xtendbin | Bin 1734 -> 1734 bytes .../quickfix/.TqclQuickfixProvider.xtendbin | Bin 1703 -> 1703 bytes .../editor/TriquetrumLibraryProvider.java | 59 +++++++- 14 files changed, 222 insertions(+), 70 deletions(-) create mode 100644 org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/ParameterDescriptor.java create mode 100644 org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/PortDescriptor.java diff --git a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/ActorDescriptor.java b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/ActorDescriptor.java index 23e47da4..fa1ec4cf 100644 --- a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/ActorDescriptor.java +++ b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/ActorDescriptor.java @@ -1,14 +1,24 @@ package org.eclipse.triquetrum.commands.api.services; +import java.util.ArrayList; +import java.util.List; + public class ActorDescriptor extends EntityDescriptor { - public ActorDescriptor(String displayName, String clazz, String icon) { - super(displayName, clazz, icon); + private List ports = new ArrayList<>(); + + public ActorDescriptor(String sourceLibrary,String displayName, String clazz, String icon) { + super(sourceLibrary,displayName, clazz, icon); } @Override public String getCategory() { return "Actor"; } + + public void addPort(PortDescriptor port) + { + ports.add(port); + } } diff --git a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/DirectorDescriptor.java b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/DirectorDescriptor.java index 14911cf8..500a8563 100644 --- a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/DirectorDescriptor.java +++ b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/DirectorDescriptor.java @@ -2,8 +2,8 @@ public class DirectorDescriptor extends EntityDescriptor { - public DirectorDescriptor(String displayName, String clazz, String icon) { - super(displayName, clazz, icon); + public DirectorDescriptor(String sourceLibrary,String displayName, String clazz, String icon) { + super(sourceLibrary,displayName, clazz, icon); // TODO Auto-generated constructor stub } diff --git a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/EntityDescriptor.java b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/EntityDescriptor.java index e46b3fb6..ac82d774 100644 --- a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/EntityDescriptor.java +++ b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/EntityDescriptor.java @@ -1,5 +1,8 @@ package org.eclipse.triquetrum.commands.api.services; +import java.util.ArrayList; +import java.util.List; + public abstract class EntityDescriptor { private String clazz; @@ -7,13 +10,23 @@ public abstract class EntityDescriptor { private String displayName; private String icon; + + private String sourceLibrary; + + private List parameters = new ArrayList<>(); - public EntityDescriptor(String displayName, String clazz, String icon) { + public EntityDescriptor(String sourceLibrary,String displayName, String clazz, String icon) { super(); + this.sourceLibrary = sourceLibrary; this.displayName = displayName; this.clazz = clazz; this.icon = icon; } + + + public String getSourceLibrary() { + return sourceLibrary; + } public String getClazz() { return clazz; @@ -28,6 +41,16 @@ public String getIcon() { } public abstract String getCategory(); + + + public void addParameter(ParameterDescriptor parameter) { + parameters.add(parameter); + } + + + public List getParameters() { + return parameters; + } diff --git a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/ParameterDescriptor.java b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/ParameterDescriptor.java new file mode 100644 index 00000000..80703117 --- /dev/null +++ b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/ParameterDescriptor.java @@ -0,0 +1,26 @@ +package org.eclipse.triquetrum.commands.api.services; + +public class ParameterDescriptor extends EntityDescriptor { + + private String defaultValue=""; + + public ParameterDescriptor(String sourceLibrary,String displayName, String clazz, String icon) { + super(sourceLibrary,displayName, clazz, icon); + } + + @Override + public String getCategory() { + return "Parameter"; + } + + public String getDefaultValue() { + return defaultValue; + } + + public void setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + } + + + +} diff --git a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/PortDescriptor.java b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/PortDescriptor.java new file mode 100644 index 00000000..e601e5c5 --- /dev/null +++ b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/PortDescriptor.java @@ -0,0 +1,19 @@ +package org.eclipse.triquetrum.commands.api.services; + +public class PortDescriptor extends EntityDescriptor { + + private boolean input; + + private boolean output; + + + public PortDescriptor(String sourceLibrary,String displayName, String clazz, String icon) { + super(sourceLibrary,displayName, clazz, icon); + } + + @Override + public String getCategory() { + return "Port"; + } + +} diff --git a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/TqCLLibraryProvider.java b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/TqCLLibraryProvider.java index f95faa05..62e3628a 100644 --- a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/TqCLLibraryProvider.java +++ b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/TqCLLibraryProvider.java @@ -17,7 +17,7 @@ public interface TqCLLibraryProvider { public List getActors(String library) throws TqCLLibraryException; -// public ActorDescriptor getActor(String library,String actorName) throws TqCLLibraryException; + public EntityDescriptor getActor(String library,String actorClass) throws TqCLLibraryException; public List getDirectors(String library) throws TqCLLibraryException; diff --git a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/impl/TcQLLibraryProviderProxy.java b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/impl/TcQLLibraryProviderProxy.java index 56abae36..91aa574c 100644 --- a/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/impl/TcQLLibraryProviderProxy.java +++ b/org.eclipse.triquetrum.commands.api/src/main/java/org/eclipse/triquetrum/commands/api/services/impl/TcQLLibraryProviderProxy.java @@ -19,6 +19,7 @@ import org.eclipse.triquetrum.commands.api.services.ActorDescriptor; import org.eclipse.triquetrum.commands.api.services.DirectorDescriptor; +import org.eclipse.triquetrum.commands.api.services.EntityDescriptor; import org.eclipse.triquetrum.commands.api.services.TqCLLibraryException; import org.eclipse.triquetrum.commands.api.services.TqCLLibraryProvider; @@ -105,4 +106,9 @@ public void addLibraryProvider(TqCLLibraryProvider tqCLLibraryProvider) { } } + @Override + public EntityDescriptor getActor(String library, String actorName) throws TqCLLibraryException { + return this.libraryProviders.get(library).getActor(library, actorName); + } + } diff --git a/org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/contentassist/TqclProposalProvider.java b/org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/contentassist/TqclProposalProvider.java index 5452a95d..1bcb4ee2 100644 --- a/org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/contentassist/TqclProposalProvider.java +++ b/org.eclipse.triquetrum.commands.xtext.ui/src/main/java/org/eclipse/triquetrum/commands/ui/contentassist/TqclProposalProvider.java @@ -13,6 +13,7 @@ */ package org.eclipse.triquetrum.commands.ui.contentassist; +import java.text.MessageFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -24,7 +25,10 @@ import org.eclipse.graphiti.features.ICreateFeature; import org.eclipse.jface.text.contentassist.ICompletionProposal; import org.eclipse.triquetrum.commands.api.TqCLServices; +import org.eclipse.triquetrum.commands.api.services.ActorDescriptor; +import org.eclipse.triquetrum.commands.api.services.DirectorDescriptor; import org.eclipse.triquetrum.commands.api.services.EntityDescriptor; +import org.eclipse.triquetrum.commands.api.services.ParameterDescriptor; import org.eclipse.triquetrum.commands.api.services.TqCLLibraryException; import org.eclipse.triquetrum.commands.api.services.TqCLLibraryProvider; import org.eclipse.triquetrum.commands.tqcl.Category; @@ -35,11 +39,16 @@ import org.eclipse.triquetrum.workflow.editor.TriqFeatureProvider; import org.eclipse.triquetrum.workflow.editor.features.ModelElementCreateFeature; import org.eclipse.triquetrum.workflow.model.util.PtolemyUtil; +import org.eclipse.ui.internal.handlers.WizardHandler.New; import org.eclipse.xtext.Assignment; import org.eclipse.xtext.RuleCall; import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext; import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor; +import com.google.common.collect.ArrayTable; +import com.google.common.collect.Multimap; +import com.google.common.collect.Table; + import ptolemy.actor.CompositeActor; import ptolemy.data.expr.Parameter; import ptolemy.kernel.Entity; @@ -55,6 +64,8 @@ public class TqclProposalProvider extends AbstractTqclProposalProvider { private Map featuresMap = new HashMap<>(); + private Map entityDescriptorsMap = new HashMap<>(); + private void initFeatureMap() { if (featuresMap.isEmpty()) { TriqFeatureProvider featureProvider = new TriqFeatureProvider(new TriqDiagramTypeProvider()); @@ -75,40 +86,53 @@ public void completeInsert_EntityClass(EObject model, Assignment assignment, Con ICompletionProposalAcceptor acceptor) { super.completeInsert_EntityClass(model, assignment, context, acceptor); - try { - Insert insert = (Insert) model; - TriquetrumScript triquetrumScript = (TriquetrumScript) insert.eContainer(); - EList libraries = triquetrumScript.getLibraries(); - TqCLLibraryProvider tcqlLibraryProvider = TqCLServices.getInstance().getTcqlLibraryProvider(); - Category category = insert.getCategory(); - List descriptors = new ArrayList<>(); - if (libraries == null) { - return; - } - if (insert.getCategory() == null) { - category = Category.ACTOR; - } - for (Library library : libraries) { - switch (category) { - case ACTOR: - descriptors.addAll((List) tcqlLibraryProvider.getActors(library.getName())); - break; - - case DIRECTOR: - descriptors.addAll((List) tcqlLibraryProvider.getDirectors(library.getName())); - break; - - default: - break; + if (model instanceof Insert) { + try { + + Insert insert = (Insert) model; + TriquetrumScript triquetrumScript = (TriquetrumScript) insert.eContainer(); + EList libraries = triquetrumScript.getLibraries(); + TqCLLibraryProvider tcqlLibraryProvider = TqCLServices.getInstance().getTcqlLibraryProvider(); + Category category = insert.getCategory(); + List descriptors = new ArrayList<>(); + if (libraries == null) { + return; } + if (insert.getCategory() == null) { + category = Category.ACTOR; + } + for (Library library : libraries) { + switch (category) { + case ACTOR: + List actorDescriptors = tcqlLibraryProvider.getActors(library.getName()); + for (EntityDescriptor actorDescriptor : actorDescriptors) { + entityDescriptorsMap.put(actorDescriptor.getClazz(), actorDescriptor); + } + descriptors.addAll((List) actorDescriptors); + break; + + case DIRECTOR: + List directors = tcqlLibraryProvider.getDirectors(library.getName()); + descriptors.addAll((List) directors); + for (DirectorDescriptor directorDescriptor : directors) { + entityDescriptorsMap.put(directorDescriptor.getClazz(), directorDescriptor); + } + descriptors.addAll((List) directors); + break; + + default: + break; + } + } + for (EntityDescriptor key : descriptors) { + ICompletionProposal completionProposal = createCompletionProposal('<' + key.getClazz() + "> as ", + key.getClazz(), null, context); + acceptor.accept(completionProposal); + } + } catch (TqCLLibraryException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } - for (EntityDescriptor key : descriptors) { - ICompletionProposal completionProposal = createCompletionProposal('<' + key.getClazz() + "> as ",key.getClazz(),null, context); - acceptor.accept(completionProposal); - } - } catch (TqCLLibraryException e) { - // TODO Auto-generated catch block - e.printStackTrace(); } } @@ -122,7 +146,7 @@ public void completeInsert_Name(EObject model, Assignment assignment, ContentAss String name = StringUtils.substringAfterLast(qualifiedName, "."); name = name.replaceAll("<", ""); name = name.replaceAll(">", ""); - ICompletionProposal completionProposal = createCompletionProposal('"'+name+'"',name,null , context); + ICompletionProposal completionProposal = createCompletionProposal('"' + name + '"', name, null, context); acceptor.accept(completionProposal); } } @@ -132,37 +156,29 @@ public void completeInsert_Parameters(EObject model, Assignment assignment, Cont ICompletionProposalAcceptor acceptor) { if (model instanceof Insert) { Insert insert = (Insert) model; - String qualifiedName = insert.getEntityClass(); - ModelElementCreateFeature modelElementCreateFeature = featuresMap.get(qualifiedName.replaceAll("\"", "")); - - String wrappedClass = modelElementCreateFeature.getWrappedClass(); - try { - - CompositeActor ca = new CompositeActor(); - - // TODO:Find a better way to do that - List parameters = new ArrayList<>(); - if ("Directors".equals(modelElementCreateFeature.getGroup())) { - Attribute director = PtolemyUtil._createAttribute(ca, wrappedClass, "autocomplention"); - parameters = director.attributeList(Parameter.class); + Category category = ((Insert) insert).getCategory(); + if (category == null) { + category = Category.ACTOR; + } + String entityClass = insert.getEntityClass(); + EntityDescriptor actor = entityDescriptorsMap.get(entityClass.substring(1, entityClass.lastIndexOf('>'))); + if (actor == null) { + return; + } + List parameters = actor.getParameters(); + for (ParameterDescriptor parameterDescriptor : parameters) { + String displayName = parameterDescriptor.getDisplayName(); + String proposal = ""; + if (displayName.contains(" ")) { + proposal = "\"" + displayName + "\""; } else { - Entity entity = PtolemyUtil._createEntity(ca, wrappedClass, null, "autocomplention"); - parameters = entity.attributeList(Parameter.class); + proposal = MessageFormat.format("${0}=\"{1}\"", displayName, parameterDescriptor.getDefaultValue()); } + String description = displayName + "(default=" + parameterDescriptor.getDefaultValue() + ")"; - for (Parameter parameter : parameters) { - Visibility visibility = parameter.getVisibility(); - - if (!Parameter.NOT_EDITABLE.equals(visibility)) { - ICompletionProposal completionProposal = createCompletionProposal(parameter.getName(), context); - acceptor.accept(completionProposal); - } - } - - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); + ICompletionProposal completionProposal = createCompletionProposal(proposal, description, null, context); + acceptor.accept(completionProposal); } } @@ -176,6 +192,7 @@ public void complete_Parameter(EObject model, RuleCall ruleCall, ContentAssistCo initFeatureMap(); org.eclipse.triquetrum.commands.tqcl.Parameter param = (org.eclipse.triquetrum.commands.tqcl.Parameter) model; EObject eContainer = param.eContainer(); + } } diff --git a/org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/.TqclUiModule.xtendbin b/org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/.TqclUiModule.xtendbin index f1833462a624735915ba1d2e7e33d35be0c45037..41267d0be7e0c8002736d070fdd417fda0c685f4 100644 GIT binary patch delta 58 zcmeyx|BIg|z?+#xgn@&DgF&otBhNV|Cb7cJcbMdvLG)i%TSg!~*@oQ$M3u2SfT$hp FP5`)o4@Lk0 delta 58 zcmeyx|BIg|z?+#xgn@&DgP}5FBhNV|rpk!TcbMdvLG)i%TSg!~*@oQ$M3u2SfT$hp FP5|Rd5dr`J diff --git a/org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/labeling/.TqclDescriptionLabelProvider.xtendbin b/org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/labeling/.TqclDescriptionLabelProvider.xtendbin index b9421743bf53e8e74824bfb8164d5ae1ff5a17e4..0eb0a8ed540585190c9e16fd44359186c93909f5 100644 GIT binary patch delta 58 zcmcb}cae`Lz?+#xgn@&DgF&otBTpj}lUU*Aex^@gx|x-a5y+oBnau)3on>Jj1z@MdNaVc_84U=SJ*0) E0DX22RR910 delta 58 zcmeAX>Jj1z@MdNaVc_84UJ*0) E0FyEgGXMYp diff --git a/org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/outline/.TqclOutlineTreeProvider.xtendbin b/org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/outline/.TqclOutlineTreeProvider.xtendbin index 9316df6d30d832f5740b1f16b6b1f186ed821cc6..578a8878cb8d7b051c6ed6b8758d511c73b3022b 100644 GIT binary patch delta 58 zcmX@cdyJPSz?+#xgn@&DgF&otBToYplUU*AKBf#X{ey*%5y+p+!Da!XoY)*dR12FE E0Ej>hvH$=8 delta 58 zcmX@cdyJPSz?+#xgn@&DgCQ(zBToYpQ&`yMKBf#X{ey*%5y+p+!Da!XoY)*dR12FE E0G<2}kN^Mx diff --git a/org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/quickfix/.TqclQuickfixProvider.xtendbin b/org.eclipse.triquetrum.commands.xtext.ui/src/main/xtend-gen/org/eclipse/triquetrum/commands/ui/quickfix/.TqclQuickfixProvider.xtendbin index acaa5d4eac1e2a30e185770cbcbaf099b0d151d1..6d9b856fcfb64f7972c68d8c22ab76d5ff766b3e 100644 GIT binary patch delta 58 zcmZ3^yPTINz?+#xgn@&DgF&otBTq6DlUU*ALZ&n@eUpWc5y+qXlGOr4DYH3%s8lv5 E0DMyoy8r+H delta 58 zcmZ3^yPTINz?+#xgn@&DgCQ(zBTq6DQ&`yMLZ&n@eUpWc5y+qXlGOr4DYH3%s8lv5 E0Fn<5nE(I) diff --git a/org.eclipse.triquetrum.workflow.editor/src/main/java/org/eclipse/triquetrum/workflow/editor/TriquetrumLibraryProvider.java b/org.eclipse.triquetrum.workflow.editor/src/main/java/org/eclipse/triquetrum/workflow/editor/TriquetrumLibraryProvider.java index 13010e66..8ff5a4e0 100644 --- a/org.eclipse.triquetrum.workflow.editor/src/main/java/org/eclipse/triquetrum/workflow/editor/TriquetrumLibraryProvider.java +++ b/org.eclipse.triquetrum.workflow.editor/src/main/java/org/eclipse/triquetrum/workflow/editor/TriquetrumLibraryProvider.java @@ -11,11 +11,23 @@ import org.eclipse.core.runtime.Platform; import org.eclipse.triquetrum.commands.api.services.ActorDescriptor; import org.eclipse.triquetrum.commands.api.services.DirectorDescriptor; +import org.eclipse.triquetrum.commands.api.services.EntityDescriptor; +import org.eclipse.triquetrum.commands.api.services.ParameterDescriptor; import org.eclipse.triquetrum.commands.api.services.TqCLLibraryException; import org.eclipse.triquetrum.commands.api.services.TqCLLibraryProvider; +import org.eclipse.triquetrum.workflow.model.util.PtolemyUtil; +import org.osgi.framework.Version; +import org.ptolemy.commons.ThreeDigitVersionSpecification; +import org.ptolemy.commons.VersionSpecification; + +import ptolemy.actor.CompositeActor; +import ptolemy.data.expr.Parameter; +import ptolemy.kernel.Entity; +import ptolemy.kernel.util.Attribute; public class TriquetrumLibraryProvider implements TqCLLibraryProvider { + private static final String TRIQUETRUM_LIBRARY_NAME = "Triquetrum"; private List actors = new ArrayList<>(); private List directors = new ArrayList<>(); private List parameters = new ArrayList<>(); @@ -45,10 +57,14 @@ private void init() { BoCategory boCategory = BoCategory.valueOf(type); switch (boCategory) { case Actor: - actors.add(new ActorDescriptor(displayName, clazz, icon)); + ActorDescriptor actorDescriptor = new ActorDescriptor(TRIQUETRUM_LIBRARY_NAME,displayName, clazz, icon); + fillParameters(actorDescriptor); + actors.add(actorDescriptor); break; case Director: - directors.add(new DirectorDescriptor(displayName, clazz, icon)); + DirectorDescriptor directorDescriptor = new DirectorDescriptor(TRIQUETRUM_LIBRARY_NAME,displayName, clazz, icon); + fillParameters(directorDescriptor); + directors.add(directorDescriptor); break; default: @@ -67,6 +83,35 @@ private void init() { initialized = true; } + private void fillParameters(EntityDescriptor entityDescriptor) { + CompositeActor ptolemyModel = new CompositeActor(); + + Version bundleVersion = TriqEditorPlugin.getDefault().getBundle().getVersion(); + VersionSpecification providerVersion = new ThreeDigitVersionSpecification(bundleVersion.getMajor(), bundleVersion.getMinor(), bundleVersion.getMicro(), + bundleVersion.getQualifier()); + try { + List paramList = new ArrayList<>(); + if (entityDescriptor instanceof ActorDescriptor) { + ActorDescriptor actorDescriptor = (ActorDescriptor) entityDescriptor; + Entity entity = PtolemyUtil._createEntity(ptolemyModel, actorDescriptor.getClazz(), providerVersion, "parameterfilling"); + paramList = entity.attributeList(Parameter.class); + } + else + { + Attribute attribute = PtolemyUtil._createAttribute(ptolemyModel, entityDescriptor.getClazz(), "parameterfilling"); + paramList = attribute.attributeList(Parameter.class); + } + for (Parameter ptolemyParameter : paramList) { + ParameterDescriptor parameter = new ParameterDescriptor(TRIQUETRUM_LIBRARY_NAME,ptolemyParameter.getName(), ptolemyParameter.getClassName(), null); + parameter.setDefaultValue(ptolemyParameter.getDefaultExpression()); + entityDescriptor.addParameter(parameter); + } + } catch (Exception e) { + //LOG + e.printStackTrace(); + } + } + @Override public List getActors(String library) throws TqCLLibraryException { init(); @@ -81,7 +126,7 @@ public List getDirectors(String library) throws TqCLLibraryE @Override public List getParameterTypes(String library) throws TqCLLibraryException { - // TODO Auto-generated method stub + return null; } @@ -106,7 +151,7 @@ public List getActorParameters(String actor) throws TqCLLibraryException @Override public Set getLibraryNames() { HashSet libraries = new HashSet(); - libraries.add("Triquetrum"); + libraries.add(TRIQUETRUM_LIBRARY_NAME); return libraries; } @@ -116,4 +161,10 @@ public boolean hasElement(String element) { return false; } + @Override + public EntityDescriptor getActor(String library, String actorClass) throws TqCLLibraryException { + // TODO Auto-generated method stub + return null; + } + }