/************************************************************************
* Copyright (c) 2015 IoT-Solutions e.U.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
************************************************************************/
package iot.jcypher.domainquery;
import iot.jcypher.domain.IDomainAccess;
import iot.jcypher.domainquery.api.DomainObjectMatch;
import iot.jcypher.domainquery.internal.QueryRecorder;
import iot.jcypher.domainquery.internal.RecordedQuery;
import java.util.List;
public class DomainQuery extends AbstractDomainQuery {
public DomainQuery(IDomainAccess domainAccess) {
super(domainAccess);
}
/**
* Create a match for a specific type of domain objects
* @param domainObjectType
* @return a DomainObjectMatch for a specific type of domain objects
*/
public <T> DomainObjectMatch<T> createMatch(Class<T> domainObjectType) {
DomainObjectMatch<T> ret = createMatchInternal(domainObjectType);
QueryRecorder.recordAssignment(this, "createMatch", ret,
QueryRecorder.literal(domainObjectType.getName()));
return ret;
}
/**
* Create a match for a list of domain objects which were retrieved by another query
* @param domainObjects a list of domain objects which were retrieved by another query
* @param domainObjectType the type of those domain objects
* @return a DomainObjectMatch
*/
public <T> DomainObjectMatch<T> createMatchFor(List<T> domainObjects,
Class<T> domainObjectType) {
DomainObjectMatch<T> ret = createMatchForInternal(domainObjects, domainObjectType);
QueryRecorder.recordAssignment(this, "createMatchFor", ret,
QueryRecorder.reference(domainObjects), QueryRecorder.literal(domainObjectType.getName()));
return ret;
}
}