package org.webcat.core.objectquery;
import org.webcat.core.ObjectQuery;
import org.webcat.core.User;
import com.webobjects.eocontrol.EOEditingContext;
import com.webobjects.eocontrol.EOQualifier;
import com.webobjects.foundation.NSKeyValueCoding;
//-------------------------------------------------------------------------
/**
* TODO real description
*
* @author Tony Allevato
* @version $Id: ObjectQuerySurrogate.java,v 1.1 2010/05/11 14:51:59 aallowat Exp $
*/
public class ObjectQuerySurrogate implements NSKeyValueCoding
{
//~ Constructors ..........................................................
// ----------------------------------------------------------
public ObjectQuerySurrogate(String objectType)
{
this.objectType = objectType;
}
//~ Methods ...............................................................
// ----------------------------------------------------------
public String objectType()
{
return objectType;
}
// ----------------------------------------------------------
public void switchToAssistantPicker()
{
isEditing = false;
queryAssistant = null;
}
// ----------------------------------------------------------
public void switchToQueryAssistant(QueryAssistantDescriptor qad)
{
isEditing = true;
EOQualifier q = null;
if (savedQuery != null)
{
q = savedQuery.qualifier();
savedQuery = null;
}
else if (model != null)
{
q = model.qualifierFromValues();
}
queryAssistant = qad;
model = qad.createModel();
if (q != null)
{
model.takeValuesFromQualifier(q);
}
}
// ----------------------------------------------------------
public void switchToSavedQuery(ObjectQuery query)
{
isEditing = true;
savedQuery = query;
queryAssistant = null;
model = null;
}
// ----------------------------------------------------------
public boolean isEditing()
{
return isEditing;
}
// ----------------------------------------------------------
public QueryAssistantDescriptor queryAssistant()
{
return queryAssistant;
}
// ----------------------------------------------------------
public AbstractQueryAssistantModel model()
{
return model;
}
// ----------------------------------------------------------
public String descriptionToSave()
{
return descriptionToSave;
}
// ----------------------------------------------------------
public void setDescriptionToSave(String description)
{
descriptionToSave = description;
}
// ----------------------------------------------------------
public ObjectQuery savedQuery()
{
return savedQuery;
}
// ----------------------------------------------------------
public ObjectQuery commitAndGetQuery(EOEditingContext ec, User user)
{
if (savedQuery != null)
{
return savedQuery;
}
else if (model != null)
{
ObjectQuery query = ObjectQuery.create(ec, false);
query.setQueryAssistantId(queryAssistant.id());
query.setDescription(descriptionToSave);
query.setUserRelationship(user.localInstance(ec));
query.setQualifier(model.qualifierFromValues());
query.setObjectType(objectType);
return query;
}
else
{
return null;
}
}
// ----------------------------------------------------------
public String displayableSummary()
{
if (savedQuery != null)
{
return "Use the previously saved query named <b>" +
savedQuery.description() + "</b>";
}
else if (queryAssistant != null)
{
return queryAssistant.description().replace("|", "");
}
else
{
return null;
}
}
// ----------------------------------------------------------
public void takeValueForKey(Object value, String key)
{
NSKeyValueCoding.DefaultImplementation.takeValueForKey(
this, value, key);
}
// ----------------------------------------------------------
public Object valueForKey(String key)
{
return NSKeyValueCoding.DefaultImplementation.valueForKey(this, key);
}
//~ Static/instance variables .............................................
private boolean isEditing;
private String objectType;
private QueryAssistantDescriptor queryAssistant;
private AbstractQueryAssistantModel model;
private String descriptionToSave;
private ObjectQuery savedQuery;
}