blob: f827be8fa06f8a332fd97fd47ed87a87fabc0b82 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012-2013 EclipseSource Muenchen GmbH 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:
* Edgar Mueller
******************************************************************************/
package org.eclipse.emf.emfstore.internal.server.model.impl.api.query;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.emfstore.common.model.ESModelElementId;
import org.eclipse.emf.emfstore.internal.common.model.ModelElementId;
import org.eclipse.emf.emfstore.internal.common.model.impl.ESModelElementIdImpl;
import org.eclipse.emf.emfstore.internal.server.model.versioning.ModelElementQuery;
import org.eclipse.emf.emfstore.server.model.query.ESModelElementQuery;
/**
* <p>
* Mapping between {@link ESModelElementQuery} and {@link ModelElementQuery}.
* </p>
* <p>
* The model element query is a specialization of the {@link ESRangeQueryImpl}, which allows to additionally alter the
* results produced by the range query on selected elements.
* </p>
*
* @author emueller
*
*/
public class ESModelElementQueryImpl extends ESRangeQueryImpl<ESModelElementQuery, ModelElementQuery> implements
ESModelElementQuery {
/**
* Constructor.
*
* @param query
* the delegate
*/
public ESModelElementQueryImpl(ModelElementQuery query) {
super(query);
}
/**
*
* {@inheritDoc}
*
* @see org.eclipse.emf.emfstore.server.model.query.ESModelElementQuery#getModelElementIds()
*/
public List<ESModelElementId> getModelElementIds() {
// TODO: provide util method
final List<ESModelElementId> result = new ArrayList<ESModelElementId>();
final ModelElementQuery query = toInternalAPI();
for (final ModelElementId id : query.getModelElements()) {
result.add(id.toAPI());
}
return result;
}
/**
*
* {@inheritDoc}
*
* @see org.eclipse.emf.emfstore.server.model.query.ESModelElementQuery#addModelElementId(org.eclipse.emf.emfstore.common.model.ESModelElementId)
*/
public void addModelElementId(ESModelElementId id) {
final ESModelElementIdImpl idImpl = (ESModelElementIdImpl) id;
getQuery().getModelElements().add(idImpl.toInternalAPI());
}
/**
*
* {@inheritDoc}
*
* @see org.eclipse.emf.emfstore.server.model.query.ESModelElementQuery#removeModelElementId(org.eclipse.emf.emfstore.common.model.ESModelElementId)
*/
public void removeModelElementId(ESModelElementId id) {
getQuery().getModelElements().remove(((ESModelElementIdImpl) id).toInternalAPI());
}
private ModelElementQuery getQuery() {
final ModelElementQuery query = toInternalAPI();
return query;
}
}