package uk.ac.ebi.fg.myequivalents.provenance.cmdline;
import static java.lang.System.err;
import static java.lang.System.out;
import static uk.ac.ebi.fg.myequivalents.utils.jaxb.DateJaxbXmlAdapter.STR2DATE;
import java.util.Date;
import org.apache.commons.cli.Options;
import uk.ac.ebi.fg.myequivalents.cmdline.LineCommand;
import uk.ac.ebi.fg.myequivalents.provenance.interfaces.ProvManagerFactory;
import uk.ac.ebi.fg.myequivalents.provenance.interfaces.ProvRegistryManager;
import uk.ac.ebi.fg.myequivalents.resources.Resources;
/**
* Implementation of {@link ProvRegistryManager#purge(Date, Date)}.
*
* {@code provenance purge
* [--prov-from <YYYYMMDD[-HHMMSS]]> [--prov-to <YYYYMMDD[-HHMMSS]]>}
*
* <dl><dt>date</dt><dd>2 Jul 2014</dd></dl>
* @author Marco Brandizi
*
*/
public class ProvenancePurgeCommand extends LineCommand
{
public ProvenancePurgeCommand ()
{
super ( "provenance purge" );
}
@Override
public void run ( String ... args )
{
super.run ( args );
if ( this.exitCode != 0 ) return;
Date from = STR2DATE.unmarshal ( this.cmdLine.getOptionValue ( "prov-from" ) ),
to = STR2DATE.unmarshal ( this.cmdLine.getOptionValue ( "prov-to" ) );
ProvManagerFactory mgrFact = Resources.getInstance ().getMyEqManagerFactory ();
ProvRegistryManager regMgr = mgrFact.newProvRegistryManager ( this.email, this.apiPassword );
int result = regMgr.purge ( from, to );
out.println ( "\nDone, " + result + " provenance entries removed." );
}
@Override
protected Options getOptions ()
{
return super.getOptions ()
.addOption ( ProvenanceFindCommand.newProvFromOption () )
.addOption ( ProvenanceFindCommand.newProvToOption () );
}
@Override
protected void printUsage ()
{
err.println ( "\n provenance purge [--prov-from <YYYYMMDD[-HHMMSS]]> [--prov-to <YYYYMMDD[-HHMMSS]]" );
err.println ( " Remove old provenance entries in a given date range. For each parameter found in the range," );
err.println ( " all the entries about such parameter are removed, except the most recent one, in order to keep " );
err.println ( " track of what/who produced a given record)" );
}
}