X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.modeling%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fmapping%2FNamingCreationInstruction.java;h=3330587b934f5e9c233b997e6b96745aff8e9168;hp=fd2dda7f403ae17595c64daee8e19e4759b8f502;hb=3a10ce856f7124f83cf03d6e7f7576da237a7cbb;hpb=969bd23cab98a79ca9101af33334000879fb60c5 diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/mapping/NamingCreationInstruction.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/mapping/NamingCreationInstruction.java index fd2dda7f4..3330587b9 100644 --- a/bundles/org.simantics.modeling/src/org/simantics/modeling/mapping/NamingCreationInstruction.java +++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/mapping/NamingCreationInstruction.java @@ -1,79 +1,80 @@ -/******************************************************************************* - * Copyright (c) 2007, 2010 Association for Decentralized Information Management - * in Industry THTH ry. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * VTT Technical Research Centre of Finland - initial API and implementation - *******************************************************************************/ -package org.simantics.modeling.mapping; - -import gnu.trove.map.hash.TIntIntHashMap; -import gnu.trove.set.hash.TIntHashSet; - -import org.simantics.datatypes.literal.GUID; -import org.simantics.db.Resource; -import org.simantics.db.WriteGraph; -import org.simantics.db.common.utils.CommonDBUtils; -import org.simantics.db.exception.DatabaseException; -import org.simantics.layer0.Layer0; -import org.simantics.layer0.utils.direct.GraphUtils; -import org.simantics.mapping.constraint.instructions.TypedBracketInstruction.CreationInstruction; -import org.simantics.modeling.services.ComponentNamingUtil; -import org.simantics.modeling.services.NamingException; -import org.simantics.project.IProject; - -public class NamingCreationInstruction extends CreationInstruction { - - IProject project; - int configurationRoot; - int lComponentType; - int lConfiguration; - - public NamingCreationInstruction(IProject project, int configurationRoot, int variableId, int componentType, - int configuration) { - super(variableId); - this.project = project; - this.configurationRoot = configurationRoot; - lComponentType = componentType; - lConfiguration = configuration; - } - - @Override - public Resource create(WriteGraph g, Object[] bindings) throws DatabaseException { - Resource componentType = (Resource) bindings[lComponentType]; - Resource configuration = (Resource) bindings[lConfiguration]; - - try { - CommonDBUtils.selectClusterSet(g, configuration); - String proposition = ComponentNamingUtil.findFreshInstanceName(g, project, (Resource)bindings[configurationRoot], configuration, componentType); - Layer0 b = Layer0.getInstance(g); - Resource result = GraphUtils.create(g, - b.HasName, proposition - ); - g.addLiteral(result, b.identifier, b.identifier_Inverse, b.GUID, GUID.random(), GUID.BINDING); - return result; - } catch (NamingException e1) { - throw new DatabaseException(e1); - } - } - - @Override - public void mapVariables(TIntIntHashMap map) { - super.mapVariables(map); - lComponentType = map.get(lComponentType); - lConfiguration = map.get(lConfiguration); - configurationRoot = map.get(configurationRoot); - } - - @Override - public void collectVariables(TIntHashSet reads, TIntHashSet writes) { - reads.add(lComponentType); - reads.add(lConfiguration); - reads.add(configurationRoot); - } - -} +/******************************************************************************* + * Copyright (c) 2007, 2010 Association for Decentralized Information Management + * in Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * VTT Technical Research Centre of Finland - initial API and implementation + *******************************************************************************/ +package org.simantics.modeling.mapping; + +import gnu.trove.map.hash.TIntIntHashMap; +import gnu.trove.set.hash.TIntHashSet; + +import org.simantics.datatypes.literal.GUID; +import org.simantics.db.Resource; +import org.simantics.db.WriteGraph; +import org.simantics.db.common.utils.CommonDBUtils; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.util.Layer0Utils; +import org.simantics.layer0.Layer0; +import org.simantics.layer0.utils.direct.GraphUtils; +import org.simantics.mapping.constraint.instructions.TypedBracketInstruction.CreationInstruction; +import org.simantics.modeling.services.ComponentNamingUtil; +import org.simantics.modeling.services.NamingException; +import org.simantics.project.IProject; + +public class NamingCreationInstruction extends CreationInstruction { + + IProject project; + int configurationRoot; + int lComponentType; + int lConfiguration; + + public NamingCreationInstruction(IProject project, int configurationRoot, int variableId, int componentType, + int configuration) { + super(variableId); + this.project = project; + this.configurationRoot = configurationRoot; + lComponentType = componentType; + lConfiguration = configuration; + } + + @Override + public Resource create(WriteGraph g, Object[] bindings) throws DatabaseException { + Resource componentType = (Resource) bindings[lComponentType]; + Resource configuration = (Resource) bindings[lConfiguration]; + + try { + CommonDBUtils.selectClusterSet(g, configuration); + String proposition = ComponentNamingUtil.findFreshInstanceName(g, project, (Resource)bindings[configurationRoot], configuration, componentType); + Layer0 b = Layer0.getInstance(g); + Resource result = GraphUtils.create(g, + b.HasName, proposition + ); + Layer0Utils.addL0Identifier(g, result); + return result; + } catch (NamingException e1) { + throw new DatabaseException(e1); + } + } + + @Override + public void mapVariables(TIntIntHashMap map) { + super.mapVariables(map); + lComponentType = map.get(lComponentType); + lConfiguration = map.get(lConfiguration); + configurationRoot = map.get(configurationRoot); + } + + @Override + public void collectVariables(TIntHashSet reads, TIntHashSet writes) { + reads.add(lComponentType); + reads.add(lConfiguration); + reads.add(configurationRoot); + } + +}