forked from r1j0/Bugspot
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* added OptionsBuilder * added RepositoryFactory
- Loading branch information
r1j0
committed
Feb 26, 2012
1 parent
496b175
commit d3a7efc
Showing
3 changed files
with
160 additions
and
43 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,75 +1,106 @@ | ||
package com.github.r1j0.bugspot; | ||
|
||
import java.util.HashMap; | ||
import java.util.List; | ||
import java.util.Map; | ||
import java.util.Map.Entry; | ||
|
||
import org.apache.commons.cli.CommandLine; | ||
import org.apache.commons.cli.CommandLineParser; | ||
import org.apache.commons.cli.HelpFormatter; | ||
import org.apache.commons.cli.Options; | ||
import org.apache.commons.cli.ParseException; | ||
import org.apache.commons.cli.PosixParser; | ||
|
||
import com.github.r1j0.bugspot.repository.LogEntries; | ||
import com.github.r1j0.bugspot.repository.Repository; | ||
import com.github.r1j0.bugspot.repository.SvnRepository; | ||
|
||
import com.github.r1j0.bugspot.repository.RepositoryFactory; | ||
|
||
public class Bugspot { | ||
|
||
private static final String NAME = Bugspot.class.getSimpleName(); | ||
|
||
|
||
public static void main(String[] args) { | ||
String url = "http://svn.apache.org/repos/asf/hadoop/common/trunk/hadoop-common-project"; | ||
String username = "anonymous"; | ||
String password = "anonymous"; | ||
args = new String[] { "-h" }; | ||
// args = new String[] { "-url", "http://svn.apache.org/repos/asf/hadoop/common/trunk/hadoop-common-project", "-u", "anonymous", "-p", "anonymous" }; | ||
/** | ||
* <code> | ||
* args = new String[] { "-url", "http://svn.apache.org/repos/asf/hadoop/common/trunk/hadoop-common-project", "-u", "anonymous", "-p", "anonymous" }; | ||
* </code> | ||
*/ | ||
CommandLineParser parser = new PosixParser(); | ||
Options commandLineOptions = OptionsBuilder.build(); | ||
CommandLine line = null; | ||
|
||
try { | ||
line = parser.parse(commandLineOptions, args); | ||
} catch (ParseException e) { | ||
System.out.println(e.getMessage() + "\n"); | ||
printHelp(commandLineOptions); | ||
System.exit(1); | ||
} | ||
|
||
Repository svnRepository = new SvnRepository(url, username, password); | ||
List<LogEntries> logEntries = svnRepository.checkout(1200180, 1241260); | ||
checkConditions(line, commandLineOptions); | ||
final Map<String, String> options = parseCommandLineOptions(line); | ||
|
||
Repository repository = RepositoryFactory.getInstance(options.get("type"), options.get("url"), options.get("username"), options.get("password")); | ||
List<LogEntries> logEntries = repository.checkout(1200180, 1241260); | ||
|
||
Computate computate = new Computate(logEntries); | ||
computate.compute(); | ||
Map<String, Double> hotspots = computate.getHotspots(); | ||
|
||
for (Entry<String, Double> entrySet : hotspots.entrySet()) { | ||
System.out.println("PATH: " + entrySet.getKey() + " VALUE: " + entrySet.getValue()); | ||
} | ||
|
||
|
||
/** | ||
* <code> | ||
Options options = new Options(); | ||
options.addOption(new Option("h", "help", false, "print this message")); | ||
options.addOption(new Option("version", | ||
"print the version information and exit")); | ||
OptionBuilder.withArgName("u"); | ||
OptionBuilder.withDescription("repository username"); | ||
OptionBuilder.hasArg(); | ||
OptionBuilder.withArgName("USERNAME"); | ||
options.addOption(OptionBuilder.create("u")); | ||
// create the parser | ||
CommandLineParser parser = new PosixParser(); | ||
} | ||
} | ||
|
||
args = new String[] { "-h", "--version" }; | ||
|
||
// parse the command line arguments | ||
CommandLine line = null; | ||
private static Map<String, String> parseCommandLineOptions(final CommandLine line) { | ||
final Map<String, String> options = new HashMap<String, String>(); | ||
|
||
try { | ||
line = parser.parse(options, args); | ||
} catch (ParseException e) { | ||
System.out.println(e.getMessage() + "\n"); | ||
HelpFormatter formatter = new HelpFormatter(); | ||
formatter.printHelp("BugSpot", options); | ||
System.exit(1); | ||
options.put("url", line.getOptionValue("url")); | ||
options.put("username", "anonymous"); | ||
options.put("password", "anonymous"); | ||
options.put("type", "svn"); | ||
|
||
if (line.hasOption("u")) { | ||
options.put("username", line.getOptionValue("u")); | ||
} | ||
|
||
if (line.hasOption("p")) { | ||
options.put("password", line.getOptionValue("p")); | ||
} | ||
|
||
if (line.hasOption("t")) { | ||
options.put("type", line.getOptionValue("t")); | ||
} | ||
|
||
return options; | ||
} | ||
|
||
|
||
private static void checkConditions(CommandLine line, Options options) { | ||
if (line.hasOption("h")) { | ||
HelpFormatter formatter = new HelpFormatter(); | ||
formatter.printHelp("BugSpot", options); | ||
printHelp(options); | ||
System.exit(0); | ||
} | ||
|
||
if (line.hasOption("version")) { | ||
System.out.println("Version is crap."); | ||
System.out.println("Version is and will be infinite."); | ||
System.exit(0); | ||
} | ||
if (line.hasOption("u")) { | ||
System.out.println("username: " + line.getOptionValue("u")); | ||
|
||
if (!line.hasOption("url")) { | ||
System.out.println("No repository url has been given."); | ||
System.exit(0); | ||
} | ||
</code> | ||
*/ | ||
} | ||
} | ||
|
||
|
||
private static void printHelp(Options options) { | ||
HelpFormatter formatter = new HelpFormatter(); | ||
formatter.printHelp(NAME, options); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
package com.github.r1j0.bugspot; | ||
|
||
import org.apache.commons.cli.Option; | ||
import org.apache.commons.cli.OptionBuilder; | ||
import org.apache.commons.cli.Options; | ||
|
||
public class OptionsBuilder { | ||
|
||
public static Options build() { | ||
Options options = new Options(); | ||
|
||
addHelpOption(options); | ||
addVersionOption(options); | ||
addUrlOption(options); | ||
addUsernameOption(options); | ||
addPasswordOption(options); | ||
addRepositoryTypeOption(options); | ||
return options; | ||
} | ||
|
||
|
||
private static void addUrlOption(Options options) { | ||
OptionBuilder.withArgName("url"); | ||
OptionBuilder.withDescription("repository url"); | ||
OptionBuilder.hasArg(); | ||
OptionBuilder.withArgName("URL"); | ||
options.addOption(OptionBuilder.create("url")); | ||
} | ||
|
||
|
||
private static void addUsernameOption(Options options) { | ||
OptionBuilder.withArgName("u"); | ||
OptionBuilder.withLongOpt("username"); | ||
OptionBuilder.withDescription("repository username"); | ||
OptionBuilder.hasArg(); | ||
OptionBuilder.withArgName("USERNAME"); | ||
options.addOption(OptionBuilder.create("u")); | ||
} | ||
|
||
|
||
private static void addPasswordOption(Options options) { | ||
OptionBuilder.withArgName("p"); | ||
OptionBuilder.withLongOpt("password"); | ||
OptionBuilder.withDescription("repository password"); | ||
OptionBuilder.hasArg(); | ||
OptionBuilder.withArgName("PASSWORD"); | ||
options.addOption(OptionBuilder.create("p")); | ||
} | ||
|
||
|
||
private static void addRepositoryTypeOption(Options options) { | ||
OptionBuilder.withArgName("t"); | ||
OptionBuilder.withLongOpt("type"); | ||
OptionBuilder.withDescription("repository type, e.g. svn or git"); | ||
OptionBuilder.hasArg(); | ||
OptionBuilder.withArgName("TYPE"); | ||
options.addOption(OptionBuilder.create("t")); | ||
} | ||
|
||
|
||
private static void addVersionOption(Options options) { | ||
options.addOption(new Option("version", "print the version information and exit")); | ||
} | ||
|
||
|
||
private static void addHelpOption(Options options) { | ||
options.addOption(new Option("h", "help", false, "print this message")); | ||
} | ||
} |
17 changes: 17 additions & 0 deletions
17
src/com/github/r1j0/bugspot/repository/RepositoryFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package com.github.r1j0.bugspot.repository; | ||
|
||
public class RepositoryFactory { | ||
|
||
public static Repository getInstance(final String type, final String url, final String username, final String password) { | ||
final String typeLowerCase = type.toLowerCase(); | ||
|
||
if (typeLowerCase.equals("svn")) { | ||
return new SvnRepository(url, username, password); | ||
} else if (typeLowerCase.equals("git")) { | ||
return new GitRepository(url, username, password); | ||
} | ||
|
||
throw new IllegalArgumentException("No repository connector for repository type " + type + " available."); | ||
} | ||
|
||
} |