/* * Copyright 2012 PRODYNA AG * * Licensed under the Eclipse Public License (EPL), Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/eclipse-1.0.php or * http://www.nabucco.org/License.html * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.nabucco.framework.generator.compiler.transformation.confluence.utils; import java.util.HashMap; import org.nabucco.framework.generator.compiler.transformation.confluence.NabuccoToConfluenceDeclarationVisitor; import org.nabucco.framework.mda.model.text.confluence.ast.ConfluenceComponent; import org.nabucco.framework.mda.model.text.confluence.ast.link.ConfluenceExternalLink; import org.nabucco.framework.mda.model.text.confluence.ast.link.ConfluenceLink; import org.nabucco.framework.mda.model.text.confluence.ast.link.ConfluenceLocalAnchor; import org.nabucco.framework.mda.model.text.confluence.ast.text.ConfluenceText; /** * NabuccoToConfluenceTableRow * * @author Leonid Agranovskiy, PRODYNA AG */ public class NabuccoToConfluenceTableRow { private static final String EMPTY = ""; private NabuccoToConfluenceTableContainer parent; private HashMap<NabuccoToConfluenceTableSpaltenEnum, ConfluenceComponent> valueMap; private NabuccoToConfluenceDeclarationVisitor visitor; public NabuccoToConfluenceTableRow(NabuccoToConfluenceTableContainer parent, NabuccoToConfluenceDeclarationVisitor visitor) { this.parent = parent; this.valueMap = new HashMap<NabuccoToConfluenceTableSpaltenEnum, ConfluenceComponent>(); this.visitor = visitor; } /** * Add a new Value to a row. If the column does not exist, it will be created * * @param column * column * @param value * value */ public void addValue(NabuccoToConfluenceTableSpaltenEnum column, ConfluenceComponent value) { if (!this.parent.getColumns().contains(column)) { this.parent.addColumn(column); } this.valueMap.put(column, value); } /** * Add a new Textelement to the row * * @param column * column for the new element * @param value * value of the element */ public void addText(NabuccoToConfluenceTableSpaltenEnum column, String value) { String normalizedValue = this.normalizeString(column, value); this.addValue(column, new ConfluenceText(normalizedValue)); } /** * Add a new Linkelement to the row * * @param column * column for the new element * @param value * value of the element */ public void addLink(NabuccoToConfluenceTableSpaltenEnum column, String value) { if (!value.equals(EMPTY)) { String normalizedValue = this.normalizeString(column, value); ConfluenceLink link = new ConfluenceLink(normalizedValue, this.visitor.findComponentToElement(normalizedValue), normalizedValue, normalizedValue); this.addValue(column, link); } else { this.addValue(column, new ConfluenceText(NabuccoConfluenceStringManipulator.CONF_EMPTY)); } } /** * Add a new Linkelement to the row * * @param column * column for the new element * @param value * value of the element */ public void addExternalLink(NabuccoToConfluenceTableSpaltenEnum column, String value, String linkUrl) { if (!value.equals(EMPTY) && !linkUrl.equals(EMPTY)) { String normalizedValue = this.normalizeString(column, value); ConfluenceExternalLink link = new ConfluenceExternalLink(linkUrl, normalizedValue); this.addValue(column, link); } else { this.addValue(column, new ConfluenceText(NabuccoConfluenceStringManipulator.CONF_EMPTY)); } } /** * Add a new local Linkelement to the row * * @param column * column for the new element * @param value * value of the element */ public void addLink(NabuccoToConfluenceTableSpaltenEnum column, ConfluenceLocalAnchor value) { this.addValue(column, new ConfluenceLink(value)); } /** * Complete String normalization * * @param column * Column * @param value * Value * @return */ private String normalizeString(NabuccoToConfluenceTableSpaltenEnum column, String value) { String retVal = value; if (retVal == null) { retVal = NabuccoConfluenceStringManipulator.CONF_EMPTY; } switch (column) { case MULTIPLICITY: retVal = NabuccoConfluenceStringManipulator.normalizeString(retVal, NabuccoConfluenceTextFormat.MULTIPLICITY); break; case EXCEPTION: retVal = NabuccoConfluenceStringManipulator.normalizeString(retVal, NabuccoConfluenceTextFormat.EXCEPTION); break; default: retVal = NabuccoConfluenceStringManipulator.normalizeString(retVal); break; } return retVal; } /** * Return a value from column in a row * * @param column * @return */ public ConfluenceComponent getValue(NabuccoToConfluenceTableSpaltenEnum column) { if (this.valueMap.containsKey(column)) { return this.valueMap.get(column); } return null; } }