From 47e54271e650affb923b6af3ee5cdae394b0cdab Mon Sep 17 00:00:00 2001 From: Todd Viegut Date: Tue, 3 Jan 2023 10:07:14 -0600 Subject: [PATCH 1/3] Issue #58 --- .../kena/rdf/model/impl/SortedModel.java | 33 +++ .../model/impl/SortedStmtIteratorImpl.java | 40 ++++ .../jena/graph/query/SimpleQueryHandler.java | 150 +++++++++++++ .../hp/hpl/jena/util/CollectionFactory.java | 107 ++++++++++ .../com/hp/hpl/jena/xmloutput/impl/Basic.java | 202 ++++++++++++++++++ 5 files changed, 532 insertions(+) create mode 100644 Kena/src/au/com/langdale/kena/rdf/model/impl/SortedModel.java create mode 100644 Kena/src/au/com/langdale/kena/rdf/model/impl/SortedStmtIteratorImpl.java create mode 100644 Kena/src/com/hp/hpl/jena/graph/query/SimpleQueryHandler.java create mode 100644 Kena/src/com/hp/hpl/jena/util/CollectionFactory.java create mode 100644 Kena/src/com/hp/hpl/jena/xmloutput/impl/Basic.java diff --git a/Kena/src/au/com/langdale/kena/rdf/model/impl/SortedModel.java b/Kena/src/au/com/langdale/kena/rdf/model/impl/SortedModel.java new file mode 100644 index 00000000..1de207bd --- /dev/null +++ b/Kena/src/au/com/langdale/kena/rdf/model/impl/SortedModel.java @@ -0,0 +1,33 @@ +package au.com.langdale.kena.rdf.model.impl; + +import com.hp.hpl.jena.enhanced.BuiltinPersonalities; +import com.hp.hpl.jena.rdf.model.Model; +import com.hp.hpl.jena.rdf.model.Property; +import com.hp.hpl.jena.rdf.model.RDFNode; +import com.hp.hpl.jena.rdf.model.Resource; +import com.hp.hpl.jena.rdf.model.StmtIterator; +import com.hp.hpl.jena.rdf.model.impl.ModelCom; + +/** + * Common methods for model implementations. + * + *

+ * This class implements common methods, mainly convenience methods, for model + * implementations. It is intended use is as a base class from which model + * implemenations can be derived. + *

+ * + * @author bwm hacked by Jeremy, tweaked by Chris (May 2002 - October 2002) + */ + +public class SortedModel extends ModelCom { + + public SortedModel(Model model) { + super(model.getGraph(), BuiltinPersonalities.model); + } + + public StmtIterator listStatements(Resource s, Property p, RDFNode o) { + return new SortedStmtIteratorImpl(super.listStatements(s, p, o)); + } + +} \ No newline at end of file diff --git a/Kena/src/au/com/langdale/kena/rdf/model/impl/SortedStmtIteratorImpl.java b/Kena/src/au/com/langdale/kena/rdf/model/impl/SortedStmtIteratorImpl.java new file mode 100644 index 00000000..f7c20f0a --- /dev/null +++ b/Kena/src/au/com/langdale/kena/rdf/model/impl/SortedStmtIteratorImpl.java @@ -0,0 +1,40 @@ +package au.com.langdale.kena.rdf.model.impl; + +import java.util.Comparator; +import java.util.Iterator; +import java.util.Set; +import java.util.TreeSet; + +import com.hp.hpl.jena.rdf.model.Statement; +import com.hp.hpl.jena.rdf.model.impl.StmtIteratorImpl; + +/** + * An implementation of StmtIterator. + * + * @author bwm + * @version Release='$Name: $' Revision='$Revision: 1.1 $' Date='$Date: + * 2009/06/29 08:55:32 $' + */ + +public class SortedStmtIteratorImpl extends StmtIteratorImpl { + + public SortedStmtIteratorImpl(Iterator iterator) { + super(initialize(iterator)); + } + + protected static Iterator initialize(Iterator iterator) { + Comparator comparator = new Comparator() { + @Override + public int compare(Statement statement1, Statement statement2) { + return statement1.toString().compareTo(statement2.toString()); + } + }; + + Set sortedSet = new TreeSet(comparator); + while (iterator.hasNext()) { + sortedSet.add(iterator.next()); + } + + return sortedSet.iterator(); + } +} \ No newline at end of file diff --git a/Kena/src/com/hp/hpl/jena/graph/query/SimpleQueryHandler.java b/Kena/src/com/hp/hpl/jena/graph/query/SimpleQueryHandler.java new file mode 100644 index 00000000..5068ea39 --- /dev/null +++ b/Kena/src/com/hp/hpl/jena/graph/query/SimpleQueryHandler.java @@ -0,0 +1,150 @@ +/* + (c) Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Hewlett-Packard Development Company, LP + [See end of file] + $Id: SimpleQueryHandler.java,v 1.1 2009/06/29 08:55:45 castagna Exp $ + */ + +package com.hp.hpl.jena.graph.query; + +import java.util.Comparator; +import java.util.Set; + +import com.hp.hpl.jena.graph.Graph; +import com.hp.hpl.jena.graph.Node; +import com.hp.hpl.jena.graph.Triple; +import com.hp.hpl.jena.util.CollectionFactory; +import com.hp.hpl.jena.util.iterator.ClosableIterator; +import com.hp.hpl.jena.util.iterator.ExtendedIterator; +import com.hp.hpl.jena.util.iterator.WrappedIterator; + +/** + * A SimpleQueryHandler is a more-or-less straightforward implementation of + * QueryHandler suitable for use on graphs with no special query engines. + * + * @author kers + */ + +public class SimpleQueryHandler implements QueryHandler { + /** the Graph this handler is working for */ + protected Graph graph; + + /** make an instance, remember the graph */ + public SimpleQueryHandler(Graph graph) { + this.graph = graph; + } + + public Stage patternStage(Mapping map, ExpressionSet constraints, Triple[] t) { + return new PatternStage(graph, map, constraints, t); + } + + public BindingQueryPlan prepareBindings(Query q, Node[] variables) { + return new SimpleQueryPlan(graph, q, variables); + } + + public TreeQueryPlan prepareTree(Graph pattern) { + return new SimpleTreeQueryPlan(graph, pattern); + } + + public ExtendedIterator objectsFor(Node s, Node p) { + return objectsFor(graph, s, p); + } + + public ExtendedIterator subjectsFor(Node p, Node o) { + return subjectsFor(graph, p, o); + } + + public ExtendedIterator predicatesFor(Node s, Node o) { + return predicatesFor(graph, s, o); + } + + public static ExtendedIterator objectsFor(Graph g, Node s, Node p) { + Comparator comparator = new Comparator() { + @Override + public int compare(Node node1, Node node2) { + return node1.toString().compareTo(node2.toString()); + } + }; + Set objects = CollectionFactory.createSortedSet(comparator); + + ClosableIterator it = g.find(s, p, Node.ANY); + + while (it.hasNext()) + objects.add(it.next().getObject()); + + return WrappedIterator.createNoRemove(objects.iterator()); + } + + public static ExtendedIterator subjectsFor(Graph g, Node p, Node o) { + Comparator comparator = new Comparator() { + @Override + public int compare(Node node1, Node node2) { + return node1.toString().compareTo(node2.toString()); + } + }; + Set objects = CollectionFactory.createSortedSet(comparator); + + ClosableIterator it = g.find(Node.ANY, p, o); + + while (it.hasNext()) + objects.add(it.next().getSubject()); + + return WrappedIterator.createNoRemove(objects.iterator()); + } + + public static ExtendedIterator predicatesFor(Graph g, Node s, Node o) { + Comparator comparator = new Comparator() { + @Override + public int compare(Node node1, Node node2) { + return node1.toString().compareTo(node2.toString()); + } + }; + Set predicates = CollectionFactory.createSortedSet(comparator); + + ClosableIterator it = g.find(s, Node.ANY, o); + + while (it.hasNext()) + predicates.add(it.next().getPredicate()); + + return WrappedIterator.createNoRemove(predicates.iterator()); + } + + /** + * this is a simple-minded implementation of containsNode that uses find up + * to three times to locate the node. Almost certainly particular graphs + * will be able to offer better query-handlers ... + */ + public boolean containsNode(Node n) { + return graph.contains(n, Node.ANY, Node.ANY) + || graph.contains(Node.ANY, n, Node.ANY) + || graph.contains(Node.ANY, Node.ANY, n); + } +} + +/* + * (c) Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Hewlett-Packard + * Development Company, LP All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ \ No newline at end of file diff --git a/Kena/src/com/hp/hpl/jena/util/CollectionFactory.java b/Kena/src/com/hp/hpl/jena/util/CollectionFactory.java new file mode 100644 index 00000000..76503e71 --- /dev/null +++ b/Kena/src/com/hp/hpl/jena/util/CollectionFactory.java @@ -0,0 +1,107 @@ +/* + (c) Copyright 2004, 2005, 2006, 2007, 2008, 2009 Hewlett-Packard Development Company, LP, all rights reserved. + [See end of file] + $Id: CollectionFactory.java,v 1.1 2009/06/29 08:55:47 castagna Exp $ + */ +package com.hp.hpl.jena.util; + +import java.util.Collection; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; + +/** + * CollectionFactory - a central place for allocating sets and maps, mostly so + * that it's easy to plug in new implementations (eg trove). + * + * @author kers + */ +public class CollectionFactory { + /** + * Answer a new Map which uses hashing for lookup. + */ + public static Map createHashedMap() { + return new HashMap(); + } + + /** + * Answer a new Map which uses hashing for lookup and has initial size + * size. + */ + public static Map createHashedMap(int size) { + return new HashMap(size); + } + + /** + * Answer a new Map which uses hashing for lookup and is initialised to be a + * copy of toCopy. + */ + public static Map createHashedMap(Map toCopy) { + return new HashMap(toCopy); + } + + /** + * Answer a new Set which uses haashing for lookup. + */ + public static Set createHashedSet() { + return new HashSet(); + } + + /** + * Answer a new Set which uses hashing for lookup and is initialised as a + * copy of toCopy. + */ + public static Set createHashedSet(Collection toCopy) { + return new HashSet(toCopy); + } + + /** + * Answer a new Set which sorts for lookup. + */ + public static Set createSortedSet(Comparator comparator) { + return new TreeSet(comparator); + } + + /** + * Answer a new Set which uses hashing for lookup and is initialised as a + * copy of toCopy. + */ + public static Set createSortedSet(Comparator comparator, + Collection toCopy) { + Set sortedSet = new TreeSet(comparator); + sortedSet.addAll(toCopy); + return sortedSet; + } +} + +/* + * (c) Copyright 2004, 2005, 2006, 2007, 2008, 2009 Hewlett-Packard Development + * Company, LP All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ \ No newline at end of file diff --git a/Kena/src/com/hp/hpl/jena/xmloutput/impl/Basic.java b/Kena/src/com/hp/hpl/jena/xmloutput/impl/Basic.java new file mode 100644 index 00000000..14b389c0 --- /dev/null +++ b/Kena/src/com/hp/hpl/jena/xmloutput/impl/Basic.java @@ -0,0 +1,202 @@ +/* + * (c) Copyright 2000, 2001, 2002, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Hewlett-Packard Development Company, LP + * All rights reserved. + [See end of file] + $Id: Basic.java,v 1.1 2009/06/29 08:55:51 castagna Exp $ + */ + +package com.hp.hpl.jena.xmloutput.impl; + +import java.io.PrintWriter; + +import au.com.langdale.kena.rdf.model.impl.SortedModel; + +import com.hp.hpl.jena.rdf.model.Literal; +import com.hp.hpl.jena.rdf.model.Model; +import com.hp.hpl.jena.rdf.model.Property; +import com.hp.hpl.jena.rdf.model.RDFNode; +import com.hp.hpl.jena.rdf.model.ResIterator; +import com.hp.hpl.jena.rdf.model.Resource; +import com.hp.hpl.jena.rdf.model.Statement; +import com.hp.hpl.jena.rdf.model.StmtIterator; +import com.hp.hpl.jena.rdf.model.impl.Util; +import com.hp.hpl.jena.vocabulary.RDFSyntax; + +/** + * Writes out an XML serialization of a model. + * + * @author bwm + * @version Release='$Name: $' Revision='$Revision: 1.1 $' Date='$Date: + * 2009/06/29 08:55:51 $' + */ +public class Basic extends BaseXMLWriter { + public Basic() { + } + + private String space; + + @Override + protected void writeBody(Model model, PrintWriter pw, String base, + boolean inclXMLBase) { + SortedModel sortedModel = new SortedModel(model); + setSpaceFromTabCount(); + writeRDFHeader(sortedModel, pw); + writeRDFStatements(sortedModel, pw); + writeRDFTrailer(pw, base); + pw.flush(); + } + + private void setSpaceFromTabCount() { + space = ""; + for (int i = 0; i < tabSize; i += 1) + space += " "; + } + + protected void writeSpace(PrintWriter writer) { + writer.print(space); + } + + private void writeRDFHeader(Model model, PrintWriter writer) { + String xmlns = xmlnsDecl(); + writer.print("<" + rdfEl("RDF") + xmlns); + if (null != xmlBase && xmlBase.length() > 0) + writer.print("\n xml:base=" + substitutedAttribute(xmlBase)); + writer.println(" > "); + } + + protected void writeRDFStatements(Model model, PrintWriter writer) { + ResIterator rIter = model.listSubjects(); + while (rIter.hasNext()) + writeRDFStatements(model, rIter.nextResource(), writer); + } + + protected void writeRDFTrailer(PrintWriter writer, String base) { + writer.println(""); + } + + protected void writeRDFStatements(Model model, Resource subject, + PrintWriter writer) { + StmtIterator sIter = model + .listStatements(subject, null, (RDFNode) null); + writeDescriptionHeader(subject, writer); + while (sIter.hasNext()) + writePredicate(sIter.nextStatement(), writer); + writeDescriptionTrailer(subject, writer); + } + + protected void writeDescriptionHeader(Resource subject, PrintWriter writer) { + writer.print(space + "<" + rdfEl("Description") + " "); + writeResourceId(subject, writer); + writer.println(">"); + } + + protected void writePredicate(Statement stmt, final PrintWriter writer) { + final Property predicate = stmt.getPredicate(); + final RDFNode object = stmt.getObject(); + + writer.print(space + + space + + "<" + + startElementTag(predicate.getNameSpace(), + predicate.getLocalName())); + + if (object instanceof Resource) { + writer.print(" "); + writeResourceReference(((Resource) object), writer); + writer.println("/>"); + } else { + writeLiteral((Literal) object, writer); + writer.println(""); + } + } + + @Override + protected void unblockAll() { + blockLiterals = false; + } + + private boolean blockLiterals = false; + + @Override + protected void blockRule(Resource r) { + if (r.equals(RDFSyntax.parseTypeLiteralPropertyElt)) { + // System.err.println("Blocking"); + blockLiterals = true; + } else + logger.warn("Cannot block rule <" + r.getURI() + ">"); + } + + protected void writeDescriptionTrailer(Resource subject, PrintWriter writer) { + writer.println(space + ""); + } + + protected void writeResourceId(Resource r, PrintWriter writer) { + if (r.isAnon()) { + writer.print(rdfAt("nodeID") + "=" + attributeQuoted(anonId(r))); + } else { + writer.print(rdfAt("about") + "=" + + substitutedAttribute(relativize(r.getURI()))); + } + } + + protected void writeResourceReference(Resource r, PrintWriter writer) { + if (r.isAnon()) { + writer.print(rdfAt("nodeID") + "=" + attributeQuoted(anonId(r))); + } else { + writer.print(rdfAt("resource") + "=" + + substitutedAttribute(relativize(r.getURI()))); + } + } + + protected void writeLiteral(Literal l, PrintWriter writer) { + String lang = l.getLanguage(); + String form = l.getLexicalForm(); + if (!lang.equals("")) { + writer.print(" xml:lang=" + attributeQuoted(lang)); + } + if (l.isWellFormedXML() && !blockLiterals) { + writer.print(" " + rdfAt("parseType") + "=" + + attributeQuoted("Literal") + ">"); + writer.print(form); + } else { + String dt = l.getDatatypeURI(); + if (dt != null) + writer.print(" " + rdfAt("datatype") + "=" + + substitutedAttribute(dt)); + writer.print(">"); + writer.print(Util.substituteEntitiesInElementContent(form)); + } + } + +} + +/* + * (c) Copyright 2000, 2001, 2002, 2002, 2003, 2004, 2005, 2006, 2007, 2008, + * 2009 Hewlett-Packard Development Company, LP All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ \ No newline at end of file From d225e1d9bacccbfff12fdcbc0c3a62884bc6ba80 Mon Sep 17 00:00:00 2001 From: Todd Viegut Date: Tue, 3 Jan 2023 10:07:36 -0600 Subject: [PATCH 2/3] Issue #57 --- CIMToolPlugin/plugin.xml | 2 +- .../wizards/ImportCopyrightTemplates.java | 26 ++- .../wizards/ImportCopyrightTemplatesPage.java | 188 +++++++++--------- .../langdale/cimtoole/wizards/NewProject.java | 7 +- CIMToolProduct/CIMTool.product | 2 +- .../au/com/langdale/ui/builder/Templates.java | 38 +++- 6 files changed, 155 insertions(+), 108 deletions(-) diff --git a/CIMToolPlugin/plugin.xml b/CIMToolPlugin/plugin.xml index eae2ba33..5b0fd957 100644 --- a/CIMToolPlugin/plugin.xml +++ b/CIMToolPlugin/plugin.xml @@ -119,7 +119,7 @@ id="au.com.langdale.cimtoole.wizards.ImportCopyrightTemplates" name="Import Copyright Templates"> - A wizard for importing copyright templates to be used in relevant profiles for a given project. + Import and/or configure copyright templates to be used in the artifacts generated by a project. http://wiki.cimtool.org - This software is Copyright 2005-2013 Langdale Consultants + This software is Copyright 2005-2023 Langdale Consultants except where otherwise stated. Langdale Consultants can be contacted at: http://www.langdale.com.au diff --git a/RCPUtil/src/au/com/langdale/ui/builder/Templates.java b/RCPUtil/src/au/com/langdale/ui/builder/Templates.java index 612d67ac..3dc2255c 100644 --- a/RCPUtil/src/au/com/langdale/ui/builder/Templates.java +++ b/RCPUtil/src/au/com/langdale/ui/builder/Templates.java @@ -418,6 +418,24 @@ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } } + private static class MyFileFieldEditor extends FileFieldEditor { + private Button button; + + public MyFileFieldEditor(String name, String text, Composite area) { + super(name, text, area); + } + + protected Button getChangeControl(Composite parent) { + if (button == null) + button = super.getChangeControl(parent); + return button; + } + + public Button getButton() { + return button; + } + } + private static class FileFieldTemplate extends SubjectTemplate { private String[] extensions; @@ -427,18 +445,28 @@ private static class FileFieldTemplate extends SubjectTemplate { } protected void register(Control widget, Assembly assembly) { - if (name != null) - assembly.putControl(name, widget); + if (name != null) { + if (widget instanceof Button) { + assembly.putControl(name + "-button", widget); + } else { + assembly.putControl(name, widget); + } + } } public Control realise(Composite parent, Assembly assembly) { Composite area = new Composite(parent, SWT.NONE); - FileFieldEditor editor = new FileFieldEditor(name, text, area); + + MyFileFieldEditor editor = new MyFileFieldEditor(name, text, area); + editor.setFileExtensions(extensions); Text field = editor.getTextControl(area); field.addModifyListener(assembly.modifyListener); register(field, assembly); + + Button button = editor.getButton(); + register(button, assembly); return area; } @@ -817,6 +845,10 @@ public static Template DisplayArea(String name, boolean scroll) { public static Template DisplayArea(String name, int lines) { return new TextTemplate(SWT.MULTI | SWT.WRAP | SWT.READ_ONLY, name, "", lines); } + + public static Template DisplayArea(String name, int lines, boolean scroll) { + return new TextTemplate(SWT.MULTI | SWT.WRAP | SWT.READ_ONLY | (scroll ? SWT.V_SCROLL : 0) | (scroll ? SWT.H_SCROLL : 0), name, "", lines); + } public static Template Label(String text) { return new LabelTemplate(SWT.NONE, null, text); From 845c7131cc4b9bba8c6bbdf32cbe689381b4b099 Mon Sep 17 00:00:00 2001 From: Todd Viegut Date: Thu, 16 Feb 2023 11:19:28 -0800 Subject: [PATCH 3/3] release 1.11.1 --- CIMToolFeature/feature.xml | 2 +- CIMToolHelp/META-INF/MANIFEST.MF | 2 +- CIMToolPlugin/META-INF/MANIFEST.MF | 2 +- CIMToolPlugin/builders/profile-doc-rtf.xsl | 2 +- CIMToolPlugin/graphics/enumclass.svg | 122 ++++++++++----------- CIMToolPlugin/graphics/enumelement.svg | 122 ++++++++++----------- CIMToolPlugin/icons/enumclass-32.png | Bin 963 -> 1132 bytes CIMToolPlugin/icons/enumclass.png | Bin 528 -> 613 bytes CIMToolPlugin/icons/enumelement-32.png | Bin 968 -> 1192 bytes CIMToolPlugin/icons/enumelement.png | Bin 536 -> 608 bytes CIMToolProduct/CIMTool.product | 3 +- CIMToolProduct/META-INF/MANIFEST.MF | 2 +- CIMToolProduct/plugin.xml | 4 +- CIMUtil/META-INF/MANIFEST.MF | 2 +- Kena/META-INF/MANIFEST.MF | 2 +- README.md | 18 +-- 16 files changed, 140 insertions(+), 143 deletions(-) diff --git a/CIMToolFeature/feature.xml b/CIMToolFeature/feature.xml index a654d53e..42f33aa0 100644 --- a/CIMToolFeature/feature.xml +++ b/CIMToolFeature/feature.xml @@ -2,7 +2,7 @@ diff --git a/CIMToolHelp/META-INF/MANIFEST.MF b/CIMToolHelp/META-INF/MANIFEST.MF index 986b5bad..1a0f61af 100644 --- a/CIMToolHelp/META-INF/MANIFEST.MF +++ b/CIMToolHelp/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: CIMTool Help Plug-in Bundle-SymbolicName: au.com.langdale.cimtoole.help;singleton:=true -Bundle-Version: 1.11.0 +Bundle-Version: 1.11.1 Bundle-ClassPath: CIMToolHelp Bundle-Vendor: Langdale Consultants Bundle-RequiredExecutionEnvironment: JavaSE-1.6 diff --git a/CIMToolPlugin/META-INF/MANIFEST.MF b/CIMToolPlugin/META-INF/MANIFEST.MF index 76cd8317..8da6d0e0 100644 --- a/CIMToolPlugin/META-INF/MANIFEST.MF +++ b/CIMToolPlugin/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: CIMTool Plug-in Bundle-SymbolicName: au.com.langdale.cimtoole;singleton:=true -Bundle-Version: 1.11.0 +Bundle-Version: 1.11.1 Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-ClassPath: cimtoole.jar, lib/commons-logging-1.1.1.jar, diff --git a/CIMToolPlugin/builders/profile-doc-rtf.xsl b/CIMToolPlugin/builders/profile-doc-rtf.xsl index 47b37310..8c4bce80 100644 --- a/CIMToolPlugin/builders/profile-doc-rtf.xsl +++ b/CIMToolPlugin/builders/profile-doc-rtf.xsl @@ -11,7 +11,7 @@ {\rtf1\ansi\ansicpg1252\deff0\deflang1033\deflangfe1033\fs20{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\fswiss\fprq2\fcharset0{\*\fname Arial;}Arial CE;} {\f23\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Arial;}}{\colortbl;\red0\green0\blue238;} \pard\plain \sb120\qj\fs20\lang1033 -{\par\b\fs28 Profile \par}Profile namespace: +{\par\b\fs28 Profile\par}Profile namespace: \par\pard\plain \sb120\qj\fs20\lang1033 {\par\b\fs28 Concrete Classes \par} diff --git a/CIMToolPlugin/graphics/enumclass.svg b/CIMToolPlugin/graphics/enumclass.svg index f1d3b325..6b1fd668 100644 --- a/CIMToolPlugin/graphics/enumclass.svg +++ b/CIMToolPlugin/graphics/enumclass.svg @@ -6,11 +6,11 @@ height="48pt" id="svg1136" sodipodi:version="0.32" - inkscape:version="1.1 (c68e22c387, 2021-05-23)" + inkscape:version="1.2.2 (732a01da63, 2022-12-09)" sodipodi:docname="enumclass.svg" - inkscape:export-filename="/home/projects/CIMTool/src/au/com/langdale/cim/uispec/enum.gif" - inkscape:export-xdpi="72.000000" - inkscape:export-ydpi="72.000000" + inkscape:export-filename="..\icons\enumclass.png" + inkscape:export-xdpi="24" + inkscape:export-ydpi="24" inkscape:output_extension="org.inkscape.output.svg.inkscape" sodipodi:modified="true" version="1.1" @@ -39,7 +39,7 @@ inkscape:collect="always" xlink:href="#linearGradient1701" id="linearGradient1706" - gradientTransform="matrix(1.548168,0.000000,0.000000,0.645925,0.312500,1.875000)" + gradientTransform="matrix(1.548168,0,0,0.645925,2.8125,1.875)" x1="3.8351779" y1="20.561615" x2="46.020683" @@ -54,18 +54,20 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="8" - inkscape:cx="37.8125" - inkscape:cy="24" + inkscape:cx="12.125" + inkscape:cy="24.125" inkscape:current-layer="layer1" showgrid="true" inkscape:grid-bbox="true" - inkscape:window-width="1116" - inkscape:window-height="760" - inkscape:window-x="556" - inkscape:window-y="241" + inkscape:window-width="1920" + inkscape:window-height="1017" + inkscape:window-x="1912" + inkscape:window-y="-8" inkscape:pagecheckerboard="0" inkscape:document-units="pt" - inkscape:window-maximized="0"> + inkscape:window-maximized="1" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1"> - + + cx="20" + cy="18.59375" + r="2.1875" /> one two three - - + + cx="20" + cy="30.625" + r="2.1875" /> + E diff --git a/CIMToolPlugin/graphics/enumelement.svg b/CIMToolPlugin/graphics/enumelement.svg index 57067f38..e7ccdc4c 100644 --- a/CIMToolPlugin/graphics/enumelement.svg +++ b/CIMToolPlugin/graphics/enumelement.svg @@ -6,11 +6,11 @@ height="48pt" id="svg1136" sodipodi:version="0.32" - inkscape:version="1.1 (c68e22c387, 2021-05-23)" + inkscape:version="1.2.2 (732a01da63, 2022-12-09)" sodipodi:docname="enumelement.svg" - inkscape:export-filename="/home/projects/CIMTool/src/au/com/langdale/cim/uispec/enum.gif" - inkscape:export-xdpi="72.000000" - inkscape:export-ydpi="72.000000" + inkscape:export-filename="..\icons\enumelement.png" + inkscape:export-xdpi="24" + inkscape:export-ydpi="24" inkscape:output_extension="org.inkscape.output.svg.inkscape" sodipodi:modified="true" version="1.1" @@ -46,7 +46,7 @@ inkscape:collect="always" xlink:href="#linearGradient1701" id="linearGradient1706" - gradientTransform="matrix(1.548168,0.000000,0.000000,0.645925,0.312500,1.875000)" + gradientTransform="matrix(1.548168,0,0,0.645925,3.8125,2)" x1="3.8351779" y1="20.561615" x2="46.020683" @@ -61,18 +61,20 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="8" - inkscape:cx="37.8125" - inkscape:cy="23.9375" + inkscape:cx="12.125" + inkscape:cy="23.875" inkscape:current-layer="layer1" showgrid="true" inkscape:grid-bbox="true" - inkscape:window-width="1116" - inkscape:window-height="763" - inkscape:window-x="1920" - inkscape:window-y="155" + inkscape:window-width="1920" + inkscape:window-height="1017" + inkscape:window-x="-8" + inkscape:window-y="-8" inkscape:pagecheckerboard="0" inkscape:document-units="pt" - inkscape:window-maximized="0"> + inkscape:window-maximized="1" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1"> - + + cx="21" + cy="18.71875" + r="2.1875" /> one two three - - + + cx="21" + cy="30.75" + r="2.1875" /> + E diff --git a/CIMToolPlugin/icons/enumclass-32.png b/CIMToolPlugin/icons/enumclass-32.png index 23a15e2f22ec3e19741002f34cbb4ff36dec30b3..73f718e377c586e3c3e9e4d8de4ae6d4f3c06b87 100644 GIT binary patch delta 1075 zcmV-31kC%x2kZ!tBoYa5NLh0L00&_J00&_KmBYBUkwz$g`AI}UR9J=Wms@NURT#&A z-QY@icXf3o$iqO*9HfU4~q7B|qi^dv#QsWCz;uDF67)^X2C=VtEO^8OK zFGjgYi3GKgYLk)*^p?eK=x$5P(i_^#Zo9kV!*16uz3c@lFaDFs`Q|&{eDgbJ&Nnkh z48!17O5M_by94_5j=nW@HJG%b4#T?W9BhGqtTe4|vBJ88YpO@7`Arh{Pye51Vb z;uDxMv;;~2RpJ>4gb6kDG2P&WKp23*p=*@iQ$%}L57m|H7#zOF`F1y}9Jx$P%vooP zD)9_hG^_`zKysgVz zjK9YMSS(hif?+&fA5U)Ik`h2tRS-PxC3xHe{ty89c{yyZTF0@IzjNe76P>OeT3WlX z+p}<8>`4hAsVcC1RE<(vtO{1=-^Cvn++=5eWwPzzDn>>p&~=@*4mTC`rKtgk$PVBg zV8e{lvGoV+woE`68xP>=9b`Hf;^^T$++R~lO=Ss)M%jkq`9DUf02qext%#feE(6&B zyI+5V`sX&szJ}iZQEFfKFr~!FN&y&#F$s7U3UaKxlU=XY&hd|rr}oxc5Fo11LP5cQ zpZclGDPm)30RRWTXrR;O<&7=c1_++MVLDvB z2@|EOc>(GkuZSzd&ki@TRQs2t-Woffs;0YV=)VJ){Mq-{)R21;Q3!%rgc3A={Ecmh z2q2(Tq!kT8qWc3uM1csA3YX}i-C5tv4m{%@x^36h=C@lM zwR_VYtr1XjAEaRzL^r4&z=$4uX8g1I_W>VY@4wMQ7ZEe?GT@lS^`?kS0hfSGU^}n_ tcsJeAFC+n;1uBw^KWZ4pnVSg~@DHXFcFL8zTI&D+002ovPDHLkV1jJA2DbnJ delta 904 zcmV;319$xF2*U@EBq9WJLP=Bz2nYy#2xN!=000SaNLh0L00&|K00&|LIC`1ekv1rQ zKuJVFR9J=Wm(On-RS?HNvuk^kICi{to5Xggnxq9Ou9YHMN?VdPl~o~BHRm2U7C2Qc zs&efGE?j!%f&`WL^#>p%RLTXU(3X<60fA^q^OMlJf!Nvg+Fmb*bv7|nwJi}DL`Pcf zo6&dPd^PXQoA<rqP$TdlzVN|=M-q_U&JVT2u@s^p z2q-EbAPOLe2%tdqzoBm$uj55fJYN^%{BEe$*LU6n&OVxeBL2YX{uqjihz~?XL`9U1 zG2%m%>i=)HO@4ow1I35^%R`FSW@=)#d=ES!P@h1>p|WVym1*^;}r%uq9j5kc6 zZU&U@Hl$5OA_13>Rit}c1Q9{g0vsRPM}E!3FfB$74WkA84F`t?G7xy}8MM zJw!USlOwuL*>;cd%+Y-WgF$Y8-1?btxbvSS;G(2PeR?qIodWv3G@6UmBlpxR&xdu7v5#+_8oG0gW0)d?#=$n+`?~M{q~2Z3DjM%(r5G7 z*R%M(%c3U3ghL$+@98I(FL3Fj&xuAOI0(g(O)RRjxOAUHqPJlJbu*xUy^*4AVi

z&$DG$a_kyNFg1Ob<>iO$-Lo5jyE6-Pb%h!Z4h>{LiFcqT!_~Ix%9&SBg7|pn;yJGy zriKPLx?vOY@85)5Ee++%St}!*s;A%jeulCQiTHNnJ=?dIfOT=2(x>yZzkLw@{$5sd z2A4kmf)`&%GkNVt26iTYnP18>*#8vwvwvU~N@T_k@zvxM+hQ?}XGR`7f74444t20M zJwPbb&P$p7WLH*k95{C5Id0tiiD0mUZ?50Qwky?p;^U=m2DEc2wAWKer{>w>Jvvc6 zgdPcz9vYx*yY}&yN6D__Id=2_m%qG<9;siF4ebF5*22a{hP`H6q({1-T6zZ$q`iyi z_=&NGO0wlu@Pt6^BAJynYhrp90TA~SSm!B7^;J~0iFi2IWnHhL74du#!7)mHr%<#u ehm`;Q>-bND-Rabe@13Lo0000BF diff --git a/CIMToolPlugin/icons/enumclass.png b/CIMToolPlugin/icons/enumclass.png index ee6de429593daccf55d70d23c93f477159f4a2d7..978c353475a6d076ee986af7250dbf6180a7b4dc 100644 GIT binary patch delta 552 zcmV+@0@wYJ1my&fBoYa5NLh0L00Xc900XcAC&Uk}kwz$g@<~KNR5*>LlFdt0VHC!H z=l!_%&WtyynQ9=%F}19fC{!>AE!^~hMM3V37P@T_{Snb7*R^laGNy%#HZ5$C5m6GE zNJH9}qchAjpKlAhWjIpcffo)3&X4DL-XqRA_EIKlK2A-~nrwI&ZBZByjVKM;0vaU- zlto12mWwWbdGGe*UjTD59QH0{$3zE+_7UZywEw%0=1Te0@^4n6J+&wO+Z9CB$QKZ8 z_;5VVr?pLL4M(l+n7BBOAM^hWuxHbV_Q`5PDw!k}@1k67VT}Gi1;jLHO`tsDiLDIw zb^D0w>~^PxCj~@V7Se5$^7vM)kVu5&a;FG7SrCzbNnms;H_HDt+h#~ z)08TIEsPCz4{^Qn!#;hs$cv={LnDJ6*dLNg{kg={!L3W&6_Bz)ed18x`uTH%R5#kv ze7@$CwumwyKB6t6JVY$b*M(NJC%<0NAoK6~E?)x}UU_`;W$%T%9a96^%DVpd4>uyf qRbU2a0&_qDNI2(i?FQIhKLOKrjQ7erL(2dQ0000LlRHlvK@^3*duPTQ3)xU0st^f?({Raf+K8r1GbV-@d@QC!EJhsq`G1@!Ty*iVloWs|Qrhs)z{X-9y4C zdK`h7?FUsxOM};$M}~(Glgl)?MR0M{1YrO0ltwe4-thTZtz}-$BuF-YpaZ>s)Efa? z<*y)?Ry*O{!fWz*?_mSCFodXOdSZl`snP$w@lg@zbf)jO`CV(?iGC+R_+bZcWs2{ni0d^mE;nT)dfB*mh07*qo IM6N<$g4s^b9RL6T diff --git a/CIMToolPlugin/icons/enumelement-32.png b/CIMToolPlugin/icons/enumelement-32.png index 7c5f9cb6e80c3fd78d52239a47c5c34dee921c7e..7ff3715b5273480d6cc0d16d2889b5d2cdb6dc8b 100644 GIT binary patch delta 1136 zcmV-$1dsd32dD{HCCgEzW87tOqzbg)TGfw-%M(KvbE9Z zgD*|gv?hJ14NwDEno_XRh6RC8DBu>$mSx#p7WVqEETI%+5!=SZe{zz!|9j?~|I9rz zcScOp02uaV;Y3HiMQg!OU}!<>XrLIU zwO~wd&%-JnT+~}xm5i<8LP7J z4S5KMgY07?!w`L!2}4*v73Sq@|Ib=K>(Npp1r^A8>6b$D%ch?kgI*XNN|R!(}!=BbW> zfFDOrF-b`&*izFe*|MF+OI0jgp1GhI5a3DRD6l(5+S67{tXNl|MPMxGXQ0PTVARLH zBd6HD>y<_QjD9+K`q+^Z`wzx)8K!C0iO4fRE8qkuDXs|YIrw=>EJ!#s!l&=QxS)}L z#R~;sM$cs(b2%j@*?9hq!}syy;ju*vm|ldDxtu0~0oEoh$5yx%fMCE+^|^0IPPS1{ zyoGf+F1+5`SS$wKI|Dczxr9P~LIEG^bDVJtm=kxdUEy|PJu3s-ux+nEYfU5)ArhHD zX@mNjAL;FCB{zQq{k@&ITdr`k%Z=54YGwa>9}_LL*%8-15K6Yv=(&#FSpa}#iIwnJ z2-7sl%61VB1zEY;!CFTiwp2ULf{mfGDsD z^j)sSVzHoQ@-CpG_XZIr?*M{`!kFx%h;g7ajEw};cw{^>mw>5qZS83MdfV07Q_~$o z;gJ5S>WicMcE9`KVn%GrlD>OW3Dacqf_fP+C+%d6pZ5L(;Pgy>v1W)!BJe7(Wty(H zM8pTQ0SUlP;055sVn#n31gHcakJG=wG|ifSQ@~#gf0wg6h@}hw0000ufs{6YR5hx4>Vba& zl?&WJ+&OUNf<$}h0Zvrq5)}>zB&b9cH7H4c(S)XHn!40>yk4)JY!7x88!FZoiUOif zTD^VW`SHH{=FQAL;W!T4DRNuA16r+r@&4pT@pWHO-%^iu%cGCK`tZ>+3CM8ZVzB3> zgHnJHf{F$yD|!>#e1s5xv{UUbK>$Q>sO@XTR`OCO!o2DSQnr8XtLj6Z?Ntm0E=LEb7I1Y9;QwNo73&(MPu!{u> z=9-IJmf17`&8x%mmCNLA&(rhPBu282qGj^!*XI#zAf==`k)&i7Sh;_fa>?T4>9^^M zzt}JV&j@I(I#TnY0zm+5+aem~>&Gx&#c|3292q%(PAC}S*4#B(Tbnz_JP7~@Ss$ofJ$>#u01#{IKuN*j zp)s^7)~NgkcENTN$laP{;nElGRy6ZjKKtZ7ZqH9+=5wqpFY;h%frk%%WA^&hrU`iF zKxY0I%zF#umlg>aQGy|zJ^Kf+%p6mfE)b2z5W-=-Y-7aQSbcb(&dzv$!vs7d(2+Vp zeEbcfeFt1D_asfcdmndhO!GLsLh`^N0G1Z-5DrHgb`A|hz^6wDM5Blrs;ADrgC^nK z4?cBoy1mJR?rqqN{QHw|tEHiXXv4NqFZf;i?#=7qlxgpX)4sE7YYD7;H$`@ChQ!G; zL=p+ie3ox6U!ecxQRZiVeq`6~Uec@g*xkLC%;faH<4phjJ#Dcaq{b)ycK)W9 zAQ;l=-G7KcD9q64n`AR-a2y7Qk8xx68o^+QndzU{SYJm7?}YS>Ku78XT}NNTSF;4h zjxNG_jIeIdo9u_`r8M^XBx{*8uZ$k!>JL{4M~r_?06_Zvb@sqv(71aUMIr{8s^I;H zkGeml;}er;(mMj%z6+icsLz3NDgSut%SAz@ngI|}P-hDeR4N@rr6StIsOs9WvIZ;L kC12ULi?uGr|GqkY3YGur!#acvl>h($07*qoM6N<$f+)GSDgXcg diff --git a/CIMToolPlugin/icons/enumelement.png b/CIMToolPlugin/icons/enumelement.png index 368063da16590dbb3e5e3ff5f956924a4e161f5d..fd12658901e3377ffcbe03badcf8792e3f210be0 100644 GIT binary patch delta 547 zcmV+;0^I$W1mFaaBoYa5NLh0L00Xc900XcAC&Uk}kwz$g?MXyIR5*>Lk~?TqaTLaX zC;xlXG>@ivG>wu(EhL8Gqm*c*q8$`PgyP)6!BHs%!9{R&5yYvpk68tAC^`t@qLXIO zTB+1WY%5J`NTW&az4^Nst+ug+esJJ$h9BSeaYSp)R%Eo6E918=bVg%CN?e!5A6x;J2={5y67DF6Tf07*p#PDHLkV1hbK_?iF! delta 474 zcmV<00VV$61egSnBq9WJLP=Bz2nYy#2xN!=000SaNLh0L00XfA00XfB^@Ht6kv1rQ zl}SWFR5*>Llfi0JK@^6+b7tn=me^G4LcyxEjab@JsNzzo3z2TRbTg0CA5R;y<%67>&vou9Zqu>nHS*h_TS3KBaW`9=M_H3=x=c3{fR+)~WtHLJ$th zdn9S+as-9xJBSLmW)}Y3!OZL&fs4;zrc;hPceaVdv=k~3gQzc3gh@*hb)OMCP03B zEnJz*9pzksUN`B+<=vyi2rVluI0b72X9e4@tqRtGQ^=Bz@o6^$kWs($FUWO$-LWsp QZvX%Q07*qoM6N<$g3>SFumAu6 diff --git a/CIMToolProduct/CIMTool.product b/CIMToolProduct/CIMTool.product index b93a6610..e51e796f 100644 --- a/CIMToolProduct/CIMTool.product +++ b/CIMToolProduct/CIMTool.product @@ -1,7 +1,7 @@ - + @@ -41,6 +41,7 @@ used in the electric power industry. It is potentially useful for other semanti + diff --git a/CIMToolProduct/META-INF/MANIFEST.MF b/CIMToolProduct/META-INF/MANIFEST.MF index c1b4d65e..d190efc9 100644 --- a/CIMToolProduct/META-INF/MANIFEST.MF +++ b/CIMToolProduct/META-INF/MANIFEST.MF @@ -2,6 +2,6 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: CIMToolEnvironment Bundle-SymbolicName: au.com.langdale.cimtool.product;singleton:=true -Bundle-Version: 1.11.0 +Bundle-Version: 1.11.1 Bundle-ClassPath: CIMToolProduct Bundle-Vendor: Langdale Consultants diff --git a/CIMToolProduct/plugin.xml b/CIMToolProduct/plugin.xml index 5c2447b4..008e32ee 100644 --- a/CIMToolProduct/plugin.xml +++ b/CIMToolProduct/plugin.xml @@ -7,7 +7,7 @@ point="org.eclipse.core.runtime.products"> + name="CIMTool 1.11.1"> @@ -30,7 +30,7 @@ + value="CIMTool 1.11.1"> Note that as of the EA 16.x release, `.eap` and `.eapx` files are no longer supported. **CIMTool** does not currently support the new EA 16.x project file format and instead the XMI schema option should be utilized if using the new release. For further information refer to EA's [EAP/EAPX File to QEA File Format](https://sparxsystems.com/enterprise_architect_user_guide/16.0/model_exchange/transfereap.html) page for a better understanding of changes in 16.x. +> Note that as of the EA 16.x release, `.eap` and `.eapx` files are no longer supported. **CIMTool** does not currently support the new EA 16.x project file format and instead the XMI schema option should be utilized if using the new release. For further information refer to EA's [EAP/EAPX File to QEA File Format](https://sparxsystems.com/enterprise_architect_user_guide/16.0/model_exchange/transfereap.html) page for a better understanding of changes in 16.x. ### File Format Considerations @@ -47,8 +47,8 @@ The following table highlights the various tradeoffs of utilizing one format ove Format | Description | Pros | Cons ----- | -----| -----| ----- `.eap` / `.eapx`| Native EA project files. Standard in EA 15.x releases and earlier the internal format is based on the MS Access. Specifically, `.eap` files are based on Jet3.5 engine and `.eapx` on Jet4.0 (see [Access Database Engine History](https://en.wikipedia.org/wiki/Access_Database_Engine)) with both stored as binaries.

The `.eapx` file format is still supported in EA 16.x but requires special runtimes to be installed. Support for `.eap` files in 16.x has been discontinued. | Both file formats can be imported directly into **CIMTool** without the overhead of having to export as an `.xmi` file.

Multi-language support via unicode is available with an `.eapx` file. | If hosting a CIMTool project on Github it is not recommended that an EA project file format be used (see: [About large files on GitHub](https://docs.github.com/en/repositories/working-with-files/managing-large-files/about-large-files-on-github) and [Git LFS](https://docs.github.com/en/repositories/working-with-files/managing-large-files/configuring-git-large-file-storage)). Instead the `.xmi` file format is recommended.

The `.eap` file format do not support [unicode](https://unicode.org/standard/WhatIsUnicode.html) and therefore is not ideal for profiles derived from CIM classes or attributes with descriptions and/or notes containing non-ASCII characters.

NOTE: To convert an `.eap` file to an `.eapx` format see [Use Languages Other Than English](https://sparxsystems.com/enterprise_architect_user_guide/15.0/team_support/check_in_languages_other_than_.html) which has the link to the [EABase JET4](https://sparxsystems.com/bin/EABase_JET4.zip) file that can be used for this purpose. Visit the [Project Data Transfers](https://sparxsystems.com/enterprise_architect_user_guide/15.0/model_publishing/performadatatransfer.html) page for further information on this process. If choosing to migrate to Jet4 then EA must also be configured to use Jet4. Refer to the [General Options](https://sparxsystems.com/enterprise_architect_user_guide/15.0/user_interface/generalsettings.html) page for details. -`.qea` / `.qeax` | Native EA project files. Introduced in EA 16.x the internal format of these files is based on the [SQLLite](https://www.sqlite.org/) open source database and is stored as binaries. Both file types support basic replication with the `.qeax` extension indicating that file sharing is enabled. A `.qeax` file can simply be renamed back to `.qea` to disable file sharing. | _These formats are not yet supported in **CIMTool**._

These native project file formats will be able to be imported directly into **CIMTool** without the overhead of having to export an `.xmi` file.| | If hosting a CIMTool project on Github the use of one of these project files is not recommended (see: [About large files on GitHub](https://docs.github.com/en/repositories/working-with-files/managing-large-files/about-large-files-on-github) and [Git LFS](https://docs.github.com/en/repositories/working-with-files/managing-large-files/configuring-git-large-file-storage)). Instead an `.xmi` file should be utilized. -`.xmi` | `.xmi` | Exporting the CIM as an `.xmi` schema file has added flexibility not available when using a native EA project file. Specifically, a subset of the CIM can be exported by simply selecting a specific package for export. This approach can be used to reduce the size of the schema file in a **CIMTool** project. Given that profiles are commonly defined for a particular domain (e.g. Transmission, Distribution, Market-related profiles) just a subset of the CIM can be exported and used within **CIMTool**. This is more suitable when hosting a **CIMTool** project in Github.

**CIMTool** supports the ability to import multiple `.xmi` schema files and for a user to assign a distinct namespace to each. This is useful when defining and exporting custom extensions as a separate `.xmi` file that coexists alongside an `.xmi` for the CIM model. | Exporting `.xmi` files can be time consuming and therefore inconvenient if quick iterative changes are needed to the CIM with a reimport into a **CIMTool** project. In this scenario it is suggested to use one of the native EA project files. The direct use of a project file eliminates the roundtrip time needed for the "make changes to the UML, export to XMI, import XMI into CIMTool" cycle. +`.qea` / `.qeax` | Native EA project files. Introduced in EA 16.x the internal format of these files is based on the [SQLLite](https://www.sqlite.org/) open source database and is stored as binaries. Both file types support basic replication with the `.qeax` extension indicating that file sharing is enabled. A `.qeax` file can simply be renamed back to `.qea` to disable file sharing. | _These formats are not yet supported in **CIMTool**._

These native project file formats will be able to be imported directly into **CIMTool** without the overhead of having to export an `.xmi` file.| | If hosting a CIMTool project on Github the use of one of these project files is not recommended (see: [About large files on GitHub](https://docs.github.com/en/repositories/working-with-files/managing-large-files/about-large-files-on-github) and [Git LFS](https://docs.github.com/en/repositories/working-with-files/managing-large-files/configuring-git-large-file-storage)). Instead an `.xmi` file should be utilized. +`.xmi` | `.xmi` | Exporting the CIM as an `.xmi` schema file has added flexibility not available when using a native EA project file. Specifically, a subset of the CIM can be exported by simply selecting a specific package for export. This approach can be used to reduce the size of the schema file in a **CIMTool** project. Given that profiles are commonly defined for a particular domain (e.g. Transmission, Distribution, Market-related profiles) just a subset of the CIM can be exported and used within **CIMTool**. This is more suitable when hosting a **CIMTool** project in Github.

**CIMTool** supports the ability to import multiple `.xmi` schema files and for a user to assign a distinct namespace to each. This is useful when defining and exporting custom extensions as a separate `.xmi` file that coexists alongside an `.xmi` for the CIM model. | Exporting `.xmi` files can be time consuming and therefore inconvenient if quick iterative changes are needed to the CIM with a reimport into a **CIMTool** project. In this scenario it is suggested to use one of the native EA project files. The direct use of a project file eliminates the roundtrip time needed for the "make changes to the UML, export to XMI, import XMI into CIMTool" cycle. ## CIMTool Profiling Tutorial @@ -75,9 +75,9 @@ Note that some content is dated: ## Latest Release - - 1.11.0 + - 1.11.1 - - The latest release is available here on GitHub at [CIMTool-1.11.0](https://github.com/CIMug-org/CIMTool/releases/tag/1.11.0) and is delivered as a ZIP file. Releases are also made available in the CIMug [tools download folder](https://cimug.ucaiug.org/Standards%20Artifacts/Forms/AllItems.aspx?RootFolder=%2FStandards%20Artifacts%2FUCA%20TF%20Tools&FolderCTID=0x0120001062F2F1DF27704DBB748ABBDC3B3AA2&View=%7BFEBD8EE1%2D6B40%2D42F6%2DB228%2DCCF131291FBE%7D) on the UCAIug website. + - The latest release is available here on GitHub at [CIMTool-1.11.1](https://github.com/CIMug-org/CIMTool/releases/tag/1.11.1) and is delivered as a ZIP file. Releases are also made available in the CIMug [tools download folder](https://cimug.ucaiug.org/Standards%20Artifacts/Forms/AllItems.aspx?RootFolder=%2FStandards%20Artifacts%2FUCA%20TF%20Tools&FolderCTID=0x0120001062F2F1DF27704DBB748ABBDC3B3AA2&View=%7BFEBD8EE1%2D6B40%2D42F6%2DB228%2DCCF131291FBE%7D) on the UCAIug website. - Information on features and fixes for the release can be found [here](https://cimug-org.github.io/CIMTool/). ## Installation & Setup