160 lines
5.1 KiB
Java
160 lines
5.1 KiB
Java
/* 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");
|
|
}
|
|
}
|