Package scigest.publish.solr

Source Code of scigest.publish.solr.SolrPublisher

package scigest.publish.solr;

import java.util.Arrays;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import esg.search.publish.api.MetadataRepositoryType;
import esg.search.publish.api.PublishingService;
import esg.search.publish.impl.PublishingServiceMain;

/**
* This class is mainly derived from esg-search package, but its direct use is
* discouraged as we we intend to use ezpub to wrap it.
*
* For ezpub point of view: the following publishing options are available
*
<ol>
<li> To unpublish a single record: <p>
*    <code> SolrPublisher id </code>,
*    where "id" is the Solr document id </li>
<li> To publish or unpublish a remote metadata repository:<p>
*     <code> SolrPublisher Metadata_Repository_URL OAI|THREDDS|FGDC true|false </code>
*     where true is publish, false is unpublish
*   
</ol>
<p>
*  Example - publish a local catalog file <p>
<code>
*     SolrPublisher file:///Users/fwang2/sample.xml THREDDS true
</code>  
*    
*  Example - publish a remote catalog file <p>
<code>
*     SolrPublisher http://promus.ccs.ornl.gov/thredds/esgcet/catalog.xml THREDDS true
</code>
* @author Feiyi Wang
*
*/
public class SolrPublisher {
 
    private static final Logger logger = LoggerFactory.getLogger(SolrPublisher.class);
   
  public static void main(String[] args) throws Exception {
   
    // create and configure beans
    ApplicationContext ctx =
        new ClassPathXmlApplicationContext(new String[] {"scigest.xml"});
   
      final PublishingService publishingService = (PublishingService) ctx.getBean("publishingService");
     
      final SolrPublisher self = new SolrPublisher();
      self.run(publishingService, args);
      logger.info("Publishing task is done!");
  }
     
     
  /**
   * Method to execute the web service invocation.
   *
   * @param publishingService
   * @param args
   * @throws Exception
   */
    protected void run(final PublishingService publishingService, final String[] args) throws Exception {
     
      if (args.length!=1 && args.length!=3) {
        logger.error("Either 1 or 3 arguments are needed. See javadoc for more usage examples");
        System.exit(1);
      }
     
     
      // unpublish single record
      if (args.length==1) {
        final String id = args[0];
        publishingService.unpublish(Arrays.asList(new String[] {id}));
       
      // publish/unpublish full repository
      } else if (args.length==3) {
       
        final String uri = args[0];
        final MetadataRepositoryType type = MetadataRepositoryType.valueOf(args[1]);
       
        //change the Metadata file's URL
        PublishingServiceMain.METADATA_URL = uri;
       
       
        final boolean publish = Boolean.parseBoolean(args[2]);
       
        if (publish) {
          publishingService.publish(uri, true, type);
        } else {
          publishingService.unpublish(uri, true, type);
        }
      }
   
  }
   
}
TOP

Related Classes of scigest.publish.solr.SolrPublisher

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.