blob: 60d17346a5e3357d5683e4c4b3271ea57a7ee8a7 [file] [log] [blame]
// RelativePhysicalGeographicRelationshipPropertyFileSpecification.java
package org.eclipse.stem.internal.data.geography.specifications;
/*******************************************************************************
* Copyright (c) 2009 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
import java.text.ParseException;
import org.eclipse.stem.core.graph.EdgeLabel;
import org.eclipse.stem.definitions.labels.LabelsFactory;
import org.eclipse.stem.definitions.labels.RelativePhysicalRelationshipLabel;
import org.eclipse.stem.definitions.labels.RelativePhysicalRelationshipLabelValue;
import org.eclipse.stem.internal.data.geography.propertydata.RelativePhysicalGeographicRelationshipPropertyData;
import org.eclipse.stem.internal.data.propertydata.PropertyData;
import org.eclipse.stem.internal.data.propertydata.RelationshipPropertyData;
/**
* This class represents a {@link org.eclipse.stem.core.graph.Graph} that
* contains {@link org.eclipse.stem.core.graph.Edge}s representing a
* "relative physical" relationship between two
* {@link org.eclipse.stem.core.graph.Node}s.
*/
public class RelativePhysicalGeographicRelationshipPropertyFileSpecification
extends GeographicRelationshipPropertyFileSpecification {
/**
* This is the name used to identify "relativephysical" edges. These are
* typically "containment" relationships between countries and lower level
* administrative entities. e.g., USA->States->Counties
*/
public final static String RELATIVE_PHYSICAL_EDGE_NAME = "relativephysical"; //$NON-NLS-1$
@Override
protected String getRelationshipName() {
return RELATIVE_PHYSICAL_EDGE_NAME;
} // getRelationshipName
@Override
protected EdgeLabel createEdgeLabel(
final RelationshipPropertyData geoRelationshipGraphData) {
final RelativePhysicalGeographicRelationshipPropertyData relationshipData = (RelativePhysicalGeographicRelationshipPropertyData) geoRelationshipGraphData;
final RelativePhysicalRelationshipLabel retValue = LabelsFactory.eINSTANCE
.createRelativePhysicalRelationshipLabel();
retValue
.setURI(createRelationshipEdgeLabelURI(geoRelationshipGraphData));
final RelativePhysicalRelationshipLabelValue currentValue = LabelsFactory.eINSTANCE
.createRelativePhysicalRelationshipLabelValue();
currentValue.setAdjacent(false);
currentValue.setRelationship(relationshipData
.getRelativePhysicalRelationship());
retValue.setCurrentValue(currentValue);
return retValue;
} // createEdgeLabel
@Override
protected PropertyData createPropertyDataInstanceFromProperty(
final String dataPropertyKey, final String propertyValue) {
RelativePhysicalGeographicRelationshipPropertyData retValue = null;
try {
retValue = new RelativePhysicalGeographicRelationshipPropertyData(
dataPropertyKey, propertyValue);
} catch (final ParseException e) {
e.printStackTrace();
System.err.println("Key:"+dataPropertyKey+" Value:"+propertyValue);
System.err.println(e.getMessage());
}
return retValue;
} // createPropertyDataInstanceFromProperty
@Override
protected String getRelationshipSpecifier(
final RelationshipPropertyData relationshipGraphData) {
final RelationshipPropertyData relationshipData = relationshipGraphData;
final StringBuilder sb = new StringBuilder("/"); //$NON-NLS-1$
sb.append(relationshipData.getRelativePhysicalRelationship().toString()
.toLowerCase());
return sb.toString();
} // getRelationshipSpecifier
} // RelativePhysicalGeographicRelationshipPropertyFileSpecification