/** * CloudGraph Community Edition (CE) License * * This is a community release of CloudGraph, a dual-license suite of * Service Data Object (SDO) 2.1 services designed for relational and * big-table style "cloud" databases, such as HBase and others. * This particular copy of the software is released under the * version 2 of the GNU General Public License. CloudGraph was developed by * TerraMeta Software, Inc. * * Copyright (c) 2013, TerraMeta Software, Inc. All rights reserved. * * General License information can be found below. * * This distribution may include materials developed by third * parties. For license and attribution notices for these * materials, please refer to the documentation that accompanies * this distribution (see the "Licenses for Third-Party Components" * appendix) or view the online documentation at * <http://cloudgraph.org/licenses/>. */ package org.cloudgraph.store.lang; import java.util.List; import java.util.Map; import java.util.Set; import org.plasma.query.model.Where; import org.plasma.sdo.PlasmaProperty; import org.plasma.sdo.PlasmaType; import org.plasma.sdo.access.provider.common.PropertyPair; import commonj.sdo.Property; import commonj.sdo.Type; /** * Common graph assembler functionality resulting from initial re-factoring and addition of parallel * assembly across RDB and Cassandra services. * * @author Scott Cinnamond * @since 0.6.2 */ public interface StatementFactory { public abstract StringBuilder createSelectConcurrent(PlasmaType type, List<PropertyPair> keyValues, int waitSeconds, List<Object> params); public abstract StringBuilder createSelect(PlasmaType type, Set<Property> props, List<PropertyPair> keyValues, List<Object> params); public abstract StringBuilder createSelect(PlasmaType type, Set<Property> props, List<PropertyPair> keyValues, FilterAssembler filterAssembler, List<Object> params); public abstract StringBuilder createInsert(PlasmaType type, Map<String, PropertyPair> values); public abstract StringBuilder createUpdate(PlasmaType type, Map<String, PropertyPair> values); public abstract StringBuilder createDelete(PlasmaType type, Map<String, PropertyPair> values); public abstract PlasmaProperty getOppositePriKeyProperty(Property targetProperty); public abstract boolean hasUpdatableProperties(Map<String, PropertyPair> values); public abstract FilterAssembler createFilterAssembler(Where where, Type targetType); }