mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 01:54:22 +00:00
[DS-440] Adjust SolrLogger and rest of Statistics system to support processing multiple statistics files. Adding CLI class.
git-svn-id: http://scm.dspace.org/svn/repo/dspace/trunk@4752 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
@@ -433,11 +433,12 @@ public class SolrLogger
|
||||
doc.addField("isBot", true);
|
||||
SolrInputDocument newInput = ClientUtils.toSolrInputDocument(doc);
|
||||
solr.add(newInput);
|
||||
log.info("Marked " + doc.getFieldValue("ip") + " as bot");
|
||||
}
|
||||
};
|
||||
|
||||
/* query for ip, exclude results previously set as bots. */
|
||||
processor.execute("ip:"+ip+ "* AND NOT isBot:true");
|
||||
processor.execute("ip:"+ip+ "* AND -isBot:true");
|
||||
|
||||
solr.commit();
|
||||
|
||||
@@ -464,7 +465,7 @@ public class SolrLogger
|
||||
};
|
||||
|
||||
/* query for ip, exclude results previously set as bots. */
|
||||
processor.execute("userAgent:"+agent+ " AND NOT isBot:true");
|
||||
processor.execute("userAgent:"+agent+ " AND -isBot:true");
|
||||
|
||||
solr.commit();
|
||||
} catch (Exception e) {
|
||||
|
@@ -0,0 +1,126 @@
|
||||
/*
|
||||
* StatisticsImporter.java
|
||||
*
|
||||
* Version: $Revision$
|
||||
*
|
||||
* Date: $Date$
|
||||
*
|
||||
* Copyright (c) 2002-2010, The DSpace Foundation. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* - Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* - Neither the name of the DSpace Foundation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
* DAMAGE.
|
||||
*/
|
||||
|
||||
package org.dspace.statistics.util;
|
||||
|
||||
import com.maxmind.geoip.Location;
|
||||
import com.maxmind.geoip.LookupService;
|
||||
import org.apache.commons.cli.*;
|
||||
import org.apache.commons.lang.time.DateFormatUtils;
|
||||
import org.apache.solr.client.solrj.SolrServerException;
|
||||
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
|
||||
import org.apache.solr.common.SolrInputDocument;
|
||||
import org.dspace.content.*;
|
||||
import org.dspace.content.Collection;
|
||||
import org.dspace.core.ConfigurationManager;
|
||||
import org.dspace.core.Constants;
|
||||
import org.dspace.core.Context;
|
||||
import org.dspace.eperson.EPerson;
|
||||
import org.dspace.statistics.SolrLogger;
|
||||
|
||||
import java.io.*;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Class to load intermediate statistics files into solr
|
||||
*
|
||||
* @author Stuart Lewis
|
||||
*/
|
||||
public class StatisticsClient
|
||||
{
|
||||
/**
|
||||
* Print the help message
|
||||
*
|
||||
* @param options The command line options the user gave
|
||||
* @param exitCode the system exit code to use
|
||||
*/
|
||||
private static void printHelp(Options options, int exitCode)
|
||||
{
|
||||
// print the help message
|
||||
HelpFormatter myhelp = new HelpFormatter();
|
||||
myhelp.printHelp("StatisticsClient\n", options);
|
||||
System.exit(exitCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Main method to run the statistics importer.
|
||||
*
|
||||
* @param args The command line arguments
|
||||
* @throws Exception If something goes wrong
|
||||
*/
|
||||
public static void main(String[] args) throws Exception
|
||||
{
|
||||
CommandLineParser parser = new PosixParser();
|
||||
|
||||
Options options = new Options();
|
||||
|
||||
options.addOption("m", "mark-bots", false, "Update Marked Robots By IP in Statistics");
|
||||
options.addOption("f", "delete-bots-by-flag", false, "Delete Robots in Statistics By IsBot Field");
|
||||
options.addOption("i", "delete-bots-by-ip", false, "Delete Robots in Statistics By spider ip's");
|
||||
options.addOption("h", "help", false, "help");
|
||||
|
||||
CommandLine line = parser.parse(options, args);
|
||||
|
||||
// Did the user ask to see the help?
|
||||
if (line.hasOption('h'))
|
||||
{
|
||||
printHelp(options, 0);
|
||||
}
|
||||
|
||||
if (line.hasOption('m'))
|
||||
{
|
||||
SolrLogger.markRobotsByIP();
|
||||
}
|
||||
else if(line.hasOption('f'))
|
||||
{
|
||||
SolrLogger.deleteRobotsByIsBotFlag();
|
||||
}
|
||||
else if(line.hasOption('i'))
|
||||
{
|
||||
SolrLogger.deleteRobotsByIP();
|
||||
}
|
||||
else
|
||||
{
|
||||
printHelp(options, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
Reference in New Issue
Block a user