package ecologylab.bigsemantics.actions;
import ecologylab.bigsemantics.metadata.builtins.RichDocument;
import ecologylab.bigsemantics.metadata.builtins.Document;
import ecologylab.bigsemantics.metadata.builtins.TextClipping;
import ecologylab.serialization.annotations.simpl_inherit;
import ecologylab.serialization.annotations.simpl_tag;
/**
* This action needs to be implemented by the client.
*
* @author quyin
*/
@simpl_inherit
public @simpl_tag(SemanticActionStandardMethods.CREATE_AND_VISUALIZE_TEXT_SURROGATE)
class CreateAndVisualizeTextSurrogateSemanticAction extends SemanticAction implements
SemanticActionStandardMethods
{
@Override
public String getActionName()
{
return CREATE_AND_VISUALIZE_TEXT_SURROGATE;
}
@Override
public void handleError()
{
// TODO Auto-generated method stub
}
static final int MAX_WORDS_IN_GIST = 8;
private String createGist(String text)
{
String[] words = text.split(" ");
String returnString = "";
int wordCount = 0;
for(String word : words)
{
if(wordCount > 0)
returnString += " ";
returnString += word;
wordCount++;
if(wordCount >= MAX_WORDS_IN_GIST)
break;
}
return returnString;
}
@Override
public Object perform(Object obj)
{
debug("Adding text clipping");
boolean isSemanticText = getArgumentBoolean(SemanticActionNamedArguments.SEMANTIC_TEXT, false);
String context = (String) getArgumentObject(SemanticActionNamedArguments.TEXT);
// TODO use html context -- need methods to strip tags to set regular context from it.
String htmlContext = (String) getArgumentObject(SemanticActionNamedArguments.HTML_CONTEXT);
if (context != null)
{
Document sourceDocument = resolveSourceDocument();
//We will do something smarter here later when we have interest vectors.
TextClipping textClipping = new TextClipping(sessionScope.getMetaMetadataRepository().getMMByName(sessionScope.TEXT_TAG));
///textClipping.setText(createGist(context));
textClipping.setText(context);
textClipping.setContext(context);
textClipping.setSourceDoc(sourceDocument);
if (sourceDocument instanceof RichDocument)
((RichDocument) sourceDocument).addClipping(textClipping);
}
return null;
}
}