Inital commit
This commit is contained in:
@@ -0,0 +1,159 @@
|
||||
/* Copyright (c) 2008 Google Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
package sample.codesearch;
|
||||
|
||||
import com.google.gdata.client.codesearch.CodeSearchService;
|
||||
|
||||
import com.google.gdata.util.common.xml.XmlWriter;
|
||||
import com.google.gdata.data.codesearch.CodeSearchFeed;
|
||||
import com.google.gdata.data.codesearch.CodeSearchEntry;
|
||||
import com.google.gdata.data.codesearch.Match;
|
||||
|
||||
|
||||
import sample.util.SimpleCommandLineParser;
|
||||
|
||||
import java.io.PrintStream;
|
||||
import java.io.PrintWriter;
|
||||
import java.net.URL;
|
||||
|
||||
|
||||
/**
|
||||
* An application that serves as a sample to show how the CodeSearchService
|
||||
* can be used to retrieve data from Google Code Search.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
public class CodeSearchClient {
|
||||
private static final String CODESEARCH_FEEDS_URL =
|
||||
"https://www.google.com/codesearch/feeds/search?";
|
||||
|
||||
private CodeSearchService codesearchService;
|
||||
private URL privateFeedUrl;
|
||||
|
||||
public CodeSearchClient(String query, String nresults, String start)
|
||||
throws Exception {
|
||||
codesearchService = new CodeSearchService("gdata-sample-codesearch");
|
||||
privateFeedUrl = new URL(CODESEARCH_FEEDS_URL + "q=" + query
|
||||
+ "&start-index=" + start +
|
||||
"&max-results="+ nresults);
|
||||
}
|
||||
|
||||
/**
|
||||
* Driver for the sample.
|
||||
*
|
||||
* @param out outputStream to which to write status and messages
|
||||
*/
|
||||
|
||||
public void run(PrintStream out) throws Exception {
|
||||
retrieveFeed(out);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves a query feed.
|
||||
*
|
||||
* @param out outputStream on which to write status info
|
||||
* @throws Exception if error in retrieving feed
|
||||
*/
|
||||
private void retrieveFeed(PrintStream out)
|
||||
throws Exception {
|
||||
PrintWriter writer = new PrintWriter(out);
|
||||
XmlWriter xmlWriter = new XmlWriter(writer);
|
||||
CodeSearchFeed myFeed =
|
||||
codesearchService.getFeed(privateFeedUrl, CodeSearchFeed.class);
|
||||
out.println("Retrieved feed: ");
|
||||
out.println("Title: " + myFeed.getTitle().getPlainText());
|
||||
out.println("Entries: " + myFeed.getEntries().size());
|
||||
out.println("Updated: " + myFeed.getUpdated());
|
||||
out.println("Start in: " + myFeed.getStartIndex());
|
||||
out.println("Entries:");
|
||||
for (CodeSearchEntry entry: myFeed.getEntries() ){
|
||||
// Default Gdata elements
|
||||
out.println("\tId: " + entry.getId());
|
||||
out.println("\tTitle: " + entry.getTitle());
|
||||
out.println("\tLink: " + entry.getHtmlLink().getHref());
|
||||
out.println("\tUpdated: " + entry.getUpdated());
|
||||
out.println("\tAuthor: " + entry.getAuthors().get(0).getName());
|
||||
if (entry.getRights() != null)
|
||||
out.println("\tLicense:" + entry.getRights().getPlainText());
|
||||
// Codesearch Elements
|
||||
out.println("\tPackage: ");
|
||||
out.println("\t\t Name:" +
|
||||
entry.getPackage().getName());
|
||||
out.println("\t\t URI:" +
|
||||
entry.getPackage().getUri());
|
||||
entry.getPackage().generate(
|
||||
xmlWriter,
|
||||
codesearchService.getExtensionProfile());
|
||||
out.println("XML: ");
|
||||
writer.flush();
|
||||
out.println("");
|
||||
out.println("\tFile: " + entry.getFile().getName());
|
||||
entry.getFile().generate(
|
||||
xmlWriter,
|
||||
codesearchService.getExtensionProfile());
|
||||
out.println("XML: ");
|
||||
writer.flush();
|
||||
out.println("");
|
||||
out.println("\tMatches: ");
|
||||
for (Match m : entry.getMatches()) {
|
||||
out.println(m.getLineNumber() + ": " +
|
||||
m.getLineText().getPlainText());
|
||||
m.generate(
|
||||
xmlWriter,
|
||||
codesearchService.getExtensionProfile());
|
||||
out.println("XML: ");
|
||||
writer.flush();
|
||||
out.println("");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Main entry point. Parses arguments and creates and invokes the
|
||||
* CodeSearchClient.
|
||||
*/
|
||||
public static void main(String[] arg)
|
||||
throws Exception {
|
||||
SimpleCommandLineParser parser = new SimpleCommandLineParser(arg);
|
||||
String query = parser.getValue("query", "query", "q");
|
||||
String nresults = parser.getValue("nresults", "nresults", "nr");
|
||||
String start = parser.getValue("start", "index", "start");
|
||||
|
||||
boolean help = parser.containsKey("help", "h");
|
||||
if (help || (query == null)) {
|
||||
usage();
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
CodeSearchClient client = new CodeSearchClient(query, nresults, start);
|
||||
client.run(System.out);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints usage of this application.
|
||||
*/
|
||||
private static void usage() {
|
||||
System.out.println(
|
||||
"Usage: java CodeSearchClient --query query_regex [--nresults number_of_results]"
|
||||
+ " [--start start_index] ");
|
||||
System.out.println(
|
||||
"\nA simple application that uses the provided query\n" +
|
||||
"and returns the results provided by the Google CodeSearch Service\n");
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Reference in New Issue
Block a user