blob: 05c61db66b5befd844387df3b919bb8edd524461 [file] [log] [blame]
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.util.List;
import org.eclipse.stem.core.common.Identifiable;
import org.eclipse.stem.core.graph.Graph;
import org.eclipse.stem.core.graph.GraphPackage;
import org.eclipse.stem.core.graph.NodeLabel;
import org.eclipse.stem.geography.names.ISOKey;
import org.eclipse.stem.internal.data.propertydata.PropertyData;
/**
* This class represents a {@link Graph} containing
* {@link org.eclipse.stem.core.graph.Label}s of {@link Node}s specific to a
* country.
*/
abstract public class CountryLabelPropertyFileSpecification extends
CountryGraphPropertyFileSpecification {
/**
* The identifier that names the type of label (e.g., "population").
*/
protected String labelName = null;
/**
* @param labelName
* the identifier that names the type of label (e.g.,
* "population")
*/
protected CountryLabelPropertyFileSpecification(final String labelName) {
super();
this.labelName = labelName;
} // CountryLabelPropertyFileSpecification
/**
* @see org.eclipse.stem.internal.data.geography.specifications.CountryGraphPropertyFileSpecification#initializeIdentifiableFromPropertyDataSet(Identifiable,
* List)
*/
@Override
protected void initializeIdentifiableFromPropertyDataSet(
final Identifiable identifiable,
final List<PropertyData> propertyDataSet) {
final Graph graph = (Graph) identifiable;
for (final PropertyData propertyData : propertyDataSet) {
graph.putNodeLabel(createLabel(adminLevel, isoKey, propertyData));
} // for each node data
} // populateFromDataSet
/**
* @param adminLevel
* the level of the country node the area label labels
* @param isoKey
* the ISO-3166 based key of the country to which the labeled
* node belongs
* @param graphData
* the data to use to create the {@link NodeLabel}
* @return an {@link NodeLabel}
*/
abstract protected NodeLabel createLabel(final AdminLevel adminLevel,
final ISOKey isoKey, final PropertyData graphData);
@Override
protected String getSerializationFileNameRoot() {
final StringBuilder sb = new StringBuilder(isoKey.toString());
sb.append("_"); //$NON-NLS-1$
sb.append(adminLevel.toString());
sb.append("_"); //$NON-NLS-1$
sb.append(labelName);
return sb.toString();
}
@Override
public String getTitleDescriptor() {
final StringBuilder sb = new StringBuilder(isoKey.toString());
sb.append(" ("); //$NON-NLS-1$
sb.append(adminLevel.toString());
sb.append(") "); //$NON-NLS-1$
sb.append(labelName);
return sb.toString();
} // getTitleDescriptor
/**
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
final StringBuilder sb = new StringBuilder(super.toString());
sb.append(" "); //$NON-NLS-1$
sb.append(labelName);
return sb.toString();
} // toString
/**
* @see org.eclipse.stem.internal.data.specifications.IdentifiableSpecification#createDubinCoreSubject()
*/
@Override
protected String createDubinCoreSubject() {
return createDublinCoreSubjectString(GraphPackage.Literals.LABEL
.getName(), labelName);
} // createDubinCoreSubject
} // CountryLabelPropertyFileSpecification