/* 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 org.amanzi.neo.models.drive.IDriveModel;
import org.amanzi.neo.models.drive.IDriveModel.IDriveType;
import org.amanzi.neo.models.exceptions.ModelException;
import org.amanzi.neo.models.impl.drive.DriveModel;
import org.amanzi.neo.models.measurement.MeasurementNodeType;
import org.amanzi.neo.models.project.IProjectModel;
import org.amanzi.neo.nodeproperties.IGeneralNodeProperties;
import org.amanzi.neo.nodeproperties.IGeoNodeProperties;
import org.amanzi.neo.nodeproperties.IMeasurementNodeProperties;
import org.amanzi.neo.nodeproperties.ITimePeriodNodeProperties;
import org.amanzi.neo.nodetypes.INodeType;
import org.amanzi.neo.providers.IDriveModelProvider;
import org.amanzi.neo.providers.IGISModelProvider;
import org.amanzi.neo.providers.IIndexModelProvider;
import org.amanzi.neo.providers.IPropertyStatisticsModelProvider;
import org.amanzi.neo.providers.impl.internal.AbstractDatasetModelProvider;
import org.amanzi.neo.services.INodeService;
/**
* TODO Purpose of
* <p>
* </p>
*
* @author Nikolay Lagutko (nikolay.lagutko@amanzitel.com)
* @since 1.0.0
*/
public class DriveModelProvider extends AbstractDatasetModelProvider<IDriveModel, IProjectModel, DriveModel>
implements
IDriveModelProvider {
private final ITimePeriodNodeProperties timePeriodNodeProperties;
private final IMeasurementNodeProperties measurementNodeProperties;
/**
* @param nodeService
* @param generalNodeProperties
* @param indexModelProvider
* @param propertyStatisticsModelProvider
* @param geoNodeProperties
* @param gisModelProvider
*/
public DriveModelProvider(final ITimePeriodNodeProperties timePeriodNodeProperties,
final IMeasurementNodeProperties measurementNodeProperties, final INodeService nodeService,
final IGeneralNodeProperties generalNodeProperties, final IIndexModelProvider indexModelProvider,
final IPropertyStatisticsModelProvider propertyStatisticsModelProvider, final IGeoNodeProperties geoNodeProperties,
final IGISModelProvider gisModelProvider) {
super(nodeService, generalNodeProperties, indexModelProvider, propertyStatisticsModelProvider, geoNodeProperties,
gisModelProvider);
this.timePeriodNodeProperties = timePeriodNodeProperties;
this.measurementNodeProperties = measurementNodeProperties;
}
@Override
protected INodeType getModelType() {
return MeasurementNodeType.DRIVE;
}
@Override
protected DriveModel createInstance() {
return new DriveModel(timePeriodNodeProperties, measurementNodeProperties, getNodeService(), getGeneralNodeProperties(),
getGeoNodeProperties());
}
@Override
protected Class< ? extends IDriveModel> getModelClass() {
return DriveModel.class;
}
@Override
public IDriveModel create(final IProjectModel parent, final String name, final IDriveType driveType) throws ModelException {
DriveModel model = createInternal(parent, name);
model.setDriveType(driveType);
return model;
}
@Override
public IDriveModel create(final IProjectModel parent, final String name) throws ModelException {
throw new UnsupportedOperationException("Should be used create() method with IDriveType parameter");
}
}