/* AWE - Amanzi Wireless Explorer
* http://awe.amanzi.org
* (C) 2008-2009, AmanziTel AB
*
* This library is provided under the terms of the Eclipse Public License
* as described at http://www.eclipse.org/legal/epl-v10.html. Any use,
* reproduction or distribution of the library constitutes recipient's
* acceptance of this agreement.
*
* This library is distributed WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
package org.amanzi.neo.providers.impl;
import java.util.List;
import org.amanzi.neo.models.exceptions.ModelException;
import org.amanzi.neo.models.impl.network.NetworkModel;
import org.amanzi.neo.models.network.INetworkModel;
import org.amanzi.neo.models.network.NetworkElementType;
import org.amanzi.neo.models.project.IProjectModel;
import org.amanzi.neo.nodeproperties.IGeneralNodeProperties;
import org.amanzi.neo.nodeproperties.IGeoNodeProperties;
import org.amanzi.neo.nodeproperties.INetworkNodeProperties;
import org.amanzi.neo.nodetypes.INodeType;
import org.amanzi.neo.providers.IGISModelProvider;
import org.amanzi.neo.providers.IIndexModelProvider;
import org.amanzi.neo.providers.INetworkModelProvider;
import org.amanzi.neo.providers.IPropertyStatisticsModelProvider;
import org.amanzi.neo.providers.impl.internal.AbstractDatasetModelProvider;
import org.amanzi.neo.services.INodeService;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
/**
* TODO Purpose of
* <p>
* </p>
*
* @author Nikolay Lagutko (nikolay.lagutko@amanzitel.com)
* @since 1.0.0
*/
public class NetworkModelProvider extends AbstractDatasetModelProvider<INetworkModel, IProjectModel, NetworkModel>
implements
INetworkModelProvider {
private final INetworkNodeProperties networkNodeProperties;
/**
* @param nodeService
* @param generalNodeProperties
* @param indexModelProvider
* @param propertyStatisticsModelProvider
*/
public NetworkModelProvider(final INodeService nodeService, final IGeneralNodeProperties generalNodeProperties,
final IIndexModelProvider indexModelProvider, final IPropertyStatisticsModelProvider propertyStatisticsModelProvider,
final IGeoNodeProperties geoNodeProperties, final INetworkNodeProperties networkNodeProperties,
final IGISModelProvider gisModelProvider) {
super(nodeService, generalNodeProperties, indexModelProvider, propertyStatisticsModelProvider, geoNodeProperties,
gisModelProvider);
this.networkNodeProperties = networkNodeProperties;
}
@Override
protected NetworkModel createInstance() {
return new NetworkModel(getNodeService(), getGeneralNodeProperties(), getGeoNodeProperties(), networkNodeProperties);
}
@Override
public INetworkModel createModel(final IProjectModel parent, final String name, final List<INodeType> structure,
final CoordinateReferenceSystem crs) throws ModelException {
NetworkModel model;
try {
model = (NetworkModel)create(parent, name);
getGisModelProvider().setCRS(model.getMainGIS(), crs);
model.setStructure(structure);
model.finishUp();
} catch (ModelException e) {
throw e;
}
return model;
}
@Override
protected Class< ? extends INetworkModel> getModelClass() {
return NetworkModel.class;
}
@Override
protected INodeType getModelType() {
return NetworkElementType.NETWORK;
}
}