/* * Copyright (c) 2012 EMC Corporation * All Rights Reserved */ package com.emc.storageos.db.client.constraint; import java.net.URI; import com.emc.storageos.db.client.constraint.impl.LabelConstraintImpl; import com.emc.storageos.db.client.constraint.impl.PrefixConstraintImpl; import com.emc.storageos.db.client.impl.ColumnField; import com.emc.storageos.db.client.impl.DataObjectType; import com.emc.storageos.db.client.impl.TypeMap; import com.emc.storageos.db.client.model.DataObject; /** * Query constraint for type & prefix matching. For example, give me FileShare * with label "foobar*" */ public interface PrefixConstraint extends Constraint { /** * Factory for creating prefix constraint */ class Factory { // tags - prefix search public static PrefixConstraint getTagsPrefixConstraint(Class<? extends DataObject> clazz, String prefix, URI tenant) { DataObjectType doType = TypeMap.getDoType(clazz); return new PrefixConstraintImpl(tenant, prefix, doType.getColumnField("tags")); } // label - prefix search public static PrefixConstraint getLabelPrefixConstraint(Class<? extends DataObject> clazz, String prefix) { DataObjectType doType = TypeMap.getDoType(clazz); return new PrefixConstraintImpl(prefix, doType.getColumnField("label")); } // tags - prefix search // This method allow system admin to get prefix constraint for system objects!!! public static PrefixConstraint getTagsPrefixConstraint(Class<? extends DataObject> clazz, String prefix) { DataObjectType doType = TypeMap.getDoType(clazz); return new PrefixConstraintImpl(prefix, doType.getColumnField("tags")); } // prefix indexed field - prefix search public static Constraint getConstraint(Class<? extends DataObject> type, String columeField, String prefix) { DataObjectType doType = TypeMap.getDoType(type); ColumnField field = doType.getColumnField(columeField); return new PrefixConstraintImpl(prefix, field); } // prefix indexed field - prefix search, scoped to resource uri public static Constraint getConstraint(Class<? extends DataObject> type, String columeField, String prefix, URI resourceUri) { DataObjectType doType = TypeMap.getDoType(type); ColumnField field = doType.getColumnField(columeField); return new PrefixConstraintImpl(resourceUri, prefix, field); } // prefix indexed field - full string match public static PrefixConstraint getFullMatchConstraint(Class<? extends DataObject> type, String columeField, String prefix) { DataObjectType doType = TypeMap.getDoType(type); ColumnField field = doType.getColumnField(columeField); return new LabelConstraintImpl(prefix, field); } } }