From 755e3898a7391438c33d9897bb6d4f364fe5cc4f Mon Sep 17 00:00:00 2001 From: ReshmaBhatia Date: Sun, 16 Jul 2017 19:53:09 -0700 Subject: [PATCH] #607 Gutenberg Crawler #607 Gutenberg Crawler --- .../corpusmanagement/services/CMDataType.java | 3 +- .../META-INF/MANIFEST.MF | 16 + .../build.properties | 5 + .../icons/GutenbergCrawlerIcon.png | Bin 0 -> 658 bytes .../icons/file_obj.gif | Bin 0 -> 354 bytes .../icons/fldr_obj.gif | Bin 0 -> 216 bytes .../icons/help_contents.gif | Bin 0 -> 259 bytes .../icons/lrun_obj.gif | Bin 0 -> 379 bytes .../plugin.xml | 41 + .../crawlers/gutenberg/ui/Activator.java | 50 + .../gutenberg/ui/GutenbergCrawlerView.java | 1162 +++++++++++++++++ .../handlers/GutenbergCrawlerViewHandler.java | 24 + .../GutenbergCrawlerViewImageRegistry.java | 46 + .../IGutenbergCrawlerViewConstants.java | 11 + .../META-INF/MANIFEST.MF | 15 + .../build.properties | 5 + .../jackson-core-2.5.0.jar | Bin 0 -> 229685 bytes .../tacit/crawlers/gutenberg/Activator.java | 50 + .../services/GutenbergConstants.java | 538 ++++++++ .../gutenberg/services/GutenbergMain.java | 165 +++ .../services/IGutenbergConstants.java | 11 + .../gutenberg/services/SearchLatest.java | 183 +++ .../gutenberg/services/SearchPopular.java | 226 ++++ edu.usc.cssl.tacit.feature/feature.xml | 15 + edu.usc.cssl.tacit.repository/plugin.xml | 9 + parent/pom.xml | 3 + 26 files changed, 2577 insertions(+), 1 deletion(-) create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg.ui/META-INF/MANIFEST.MF create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg.ui/build.properties create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg.ui/icons/GutenbergCrawlerIcon.png create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg.ui/icons/file_obj.gif create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg.ui/icons/fldr_obj.gif create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg.ui/icons/help_contents.gif create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg.ui/icons/lrun_obj.gif create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg.ui/plugin.xml create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/Activator.java create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/GutenbergCrawlerView.java create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/handlers/GutenbergCrawlerViewHandler.java create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/internal/GutenbergCrawlerViewImageRegistry.java create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/internal/IGutenbergCrawlerViewConstants.java create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg/META-INF/MANIFEST.MF create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg/build.properties create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg/jackson-core-2.5.0.jar create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg/src/edu/usc/cssl/tacit/crawlers/gutenberg/Activator.java create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg/src/edu/usc/cssl/tacit/crawlers/gutenberg/services/GutenbergConstants.java create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg/src/edu/usc/cssl/tacit/crawlers/gutenberg/services/GutenbergMain.java create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg/src/edu/usc/cssl/tacit/crawlers/gutenberg/services/IGutenbergConstants.java create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg/src/edu/usc/cssl/tacit/crawlers/gutenberg/services/SearchLatest.java create mode 100644 edu.usc.cssl.tacit.crawlers.gutenberg/src/edu/usc/cssl/tacit/crawlers/gutenberg/services/SearchPopular.java diff --git a/edu.usc.cssl.tacit.common.ui/src/edu/usc/cssl/tacit/common/ui/corpusmanagement/services/CMDataType.java b/edu.usc.cssl.tacit.common.ui/src/edu/usc/cssl/tacit/common/ui/corpusmanagement/services/CMDataType.java index 654f24b6..9f1a3fda 100644 --- a/edu.usc.cssl.tacit.common.ui/src/edu/usc/cssl/tacit/common/ui/corpusmanagement/services/CMDataType.java +++ b/edu.usc.cssl.tacit.common.ui/src/edu/usc/cssl/tacit/common/ui/corpusmanagement/services/CMDataType.java @@ -1,7 +1,7 @@ package edu.usc.cssl.tacit.common.ui.corpusmanagement.services; public enum CMDataType { - JSON,REDDIT_JSON, TWITTER_JSON, STACKEXCHANGE_JSON, FRONTIER_JSON, TYPEPAD_JSON, CONGRESS_JSON, PLAIN_TEXT, XML, MICROSOFT_WORD, PRESIDENCY_JSON, HANSARD_JSON, IMPORTED_CSV, PLOSONE_JSON, GOVTRACK_JSON, LATIN_JSON; + JSON,REDDIT_JSON, TWITTER_JSON, STACKEXCHANGE_JSON, FRONTIER_JSON, TYPEPAD_JSON, CONGRESS_JSON, PLAIN_TEXT, XML, MICROSOFT_WORD, PRESIDENCY_JSON, HANSARD_JSON, IMPORTED_CSV, PLOSONE_JSON, GOVTRACK_JSON, LATIN_JSON, GUTENBERG_JSON; public static CMDataType get(String dataType) { if(dataType.equals("PLAIN_TEXT")) return CMDataType.PLAIN_TEXT; @@ -20,6 +20,7 @@ public static CMDataType get(String dataType) { else if(dataType.equals("PLOSONE_JSON")) return CMDataType.PLOSONE_JSON; else if(dataType.equals("GOVTRACK_JSON")) return CMDataType.GOVTRACK_JSON; else if(dataType.equals("LATIN_JSON")) return CMDataType.LATIN_JSON; + else if(dataType.equals("GUTENBERG_JSON")) return CMDataType.GUTENBERG_JSON; return null; } } diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg.ui/META-INF/MANIFEST.MF b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/META-INF/MANIFEST.MF new file mode 100644 index 00000000..7504df20 --- /dev/null +++ b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/META-INF/MANIFEST.MF @@ -0,0 +1,16 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Ui +Bundle-SymbolicName: edu.usc.cssl.tacit.crawlers.gutenberg.ui;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Activator: edu.usc.cssl.tacit.crawlers.gutenberg.ui.Activator +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.eclipse.ui.forms;bundle-version="3.6.200", + edu.usc.cssl.tacit.common.ui;bundle-version="1.0.0", + edu.usc.cssl.tacit.help;bundle-version="1.0.0", + org.eclipse.help;bundle-version="3.6.0", + edu.usc.cssl.tacit.common;bundle-version="1.0.0", + edu.usc.cssl.tacit.crawlers.gutenberg;bundle-version="1.0.0" +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Bundle-ActivationPolicy: lazy diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg.ui/build.properties b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/build.properties new file mode 100644 index 00000000..e9863e28 --- /dev/null +++ b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/build.properties @@ -0,0 +1,5 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg.ui/icons/GutenbergCrawlerIcon.png b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/icons/GutenbergCrawlerIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..2316360106c1993b79793f8fcbb0ef538b569e38 GIT binary patch literal 658 zcmV;D0&V??P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf00v@9M??Vs0RI60 zpuMM)0006NNkl)4-7-UI*I*s~Z5RsM^1bBEdpXuwvtL<%^Q=A+f#m>Y88m6XjH$RVit{1l;kzsX- zhSpZSn5nMDo2@OJZfxL!;>Vn;Or?-_9OUcjir1?wc)PNK2UbzHxA-_a zi__s@)N}m{&!n4&dv$Pto9St-k>bjBADWL`lNW1i2vcNFPC_j&qk?lkcqaXahd878 z`Pi85MvM6p)sp8ai^*5=jEP~kZI6t=xxB<{-b`YB9dVA0Si&a;?_C4)&W%Yot3Mqd zM~-{G;6d&U4Qa7#*@W(3(bItmF_CKx+cx|)HTX0zfJTmu*c8(S3myaS*Cr<4i9>3M sh|7JA>YZi%(}4*iD4S3yK>7Xn1A>s}{)PVo>i_@%07*qoM6N<$f>6vVcmMzZ literal 0 HcmV?d00001 diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg.ui/icons/file_obj.gif b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/icons/file_obj.gif new file mode 100644 index 0000000000000000000000000000000000000000..7ccc6a70317bf439c4178f66c40005ebf9e72314 GIT binary patch literal 354 zcmV-o0iFIwNk%w1VGsZi0M!5h^Y#1q`TT>Cv4fGYhm)>@lCgr3u!EAY?(+Kb_51ny z{P_9%hMK;NpTdTeu8Wqd@bvqWrpB7A%c8T-sJPRtyw%?5_}%CC-{|+`?D^;J`R(%h z^Y;7P=l9>~_}=LE;p+J6@cH)m`;eNb=I;6M_51Sn`<9)g_4xbu`TLcfq?@6kp`@Ir zsF8yg6Lgc~kJEFpM$VhkZHMJps4l$Db! zMJgGKdkh&TMI#`iq@*K74<3wT7#|i7MGhSu7qqms1VsV`2L`;o2Lc03#6v*wj(b5!P~sjn^4pBFDXFJ7TPNb)}zFdzZN zpDc_F4AKlbATf}g46LCK)cR5~=VfGBty!EmMJ+qTijl!k<;;`cOWYDXbj&=28jDUI znIPA;;-J&oD09KqYe6rnb~B%5E3$|U5T+@im_^v zw``QSd7ZwMvdp5p(@=n__51(&{r~9j_4NDy_x%6u^7Z!o|LpSh`ThU={{Qv-|M>m? z_x=C-{{Qy<|NsC0A^8LW0018VEC2ui01yBW000Gm;3tk`X+Do(pr)8Mgb)zTT0U^W z?HoWqBm<#9IH-g~!w8q*Bn*q1fs<(fKMz8r<6!JkoDSh?xL`1m9m0T!L@LTpc|+%{ z6&U&@o~2NBDm#AzS2%uu4h|L`78F(^LK+$zDjF6V1aU4f5IhhQKQ{(25)w2vEhs81 JEv+RX06QZIfSmvU literal 0 HcmV?d00001 diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg.ui/icons/lrun_obj.gif b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/icons/lrun_obj.gif new file mode 100644 index 0000000000000000000000000000000000000000..57f410224cf0e125fefdfbfd424b34ca32650ac4 GIT binary patch literal 379 zcmZ?wbhEHb6krfwxXQqw(BP;BL>-Qf6T{aP*iM?lCLeYNChZ zME|t4Kq*J#ax2FU508od{@|VOltj+J(UOww!N5}U3iQCI3ZqHwGu%qFO+M$;f|G|KP zbfEZ?g^__lk3k2d733!dwiyo73p{kh9NV1~0xTMO)-@+?HCpL1C+*_|jkQs$L%3SK zWZD#%Uw+AK^#3sVq2$yax7_cq>g;#(C^lABHOjI%u}OEy<@M@F%Q8AK@K5dOm7mJO z;KV30f4Z*Rd;#G}fjokO)8$r)3o+Lza0p5E$no(>iVJg;1ab?@$%#scNeOe;IkR(c Y3G?y_b8(z@@nG_1@(Z}@>d0UX09ibCp#T5? literal 0 HcmV?d00001 diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg.ui/plugin.xml b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/plugin.xml new file mode 100644 index 00000000..1e289eae --- /dev/null +++ b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/plugin.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/Activator.java b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/Activator.java new file mode 100644 index 00000000..fb8b0f05 --- /dev/null +++ b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/Activator.java @@ -0,0 +1,50 @@ +package edu.usc.cssl.tacit.crawlers.gutenberg.ui; + +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class Activator extends AbstractUIPlugin { + + // The plug-in ID + public static final String PLUGIN_ID = "edu.usc.cssl.tacit.crawlers.gutenberg.ui"; //$NON-NLS-1$ + + // The shared instance + private static Activator plugin; + + /** + * The constructor + */ + public Activator() { + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + } + + /* + * (non-Javadoc) + * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static Activator getDefault() { + return plugin; + } + +} diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/GutenbergCrawlerView.java b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/GutenbergCrawlerView.java new file mode 100644 index 00000000..e8aee9ab --- /dev/null +++ b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/GutenbergCrawlerView.java @@ -0,0 +1,1162 @@ +package edu.usc.cssl.tacit.crawlers.gutenberg.ui; + +import java.awt.Image; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.IJobChangeEvent; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.core.runtime.jobs.JobChangeAdapter; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.dialogs.IMessageProvider; +import org.eclipse.jface.layout.GridDataFactory; +import org.eclipse.jface.layout.GridLayoutFactory; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.window.Window; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.ScrolledComposite; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.events.KeyListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.DirectoryDialog; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableItem; +import org.eclipse.swt.widgets.Text; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeItem; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.dialogs.ElementListSelectionDialog; +import org.eclipse.ui.dialogs.PreferencesUtil; +import org.eclipse.ui.forms.IFormColors; +import org.eclipse.ui.forms.events.HyperlinkEvent; +import org.eclipse.ui.forms.events.IHyperlinkListener; +import org.eclipse.ui.forms.widgets.FormToolkit; +import org.eclipse.ui.forms.widgets.Hyperlink; +import org.eclipse.ui.forms.widgets.ScrolledForm; +import org.eclipse.ui.forms.widgets.Section; +import org.eclipse.ui.part.ViewPart; + +import edu.usc.cssl.tacit.crawlers.gutenberg.ui.internal.IGutenbergCrawlerViewConstants; +import edu.usc.cssl.tacit.crawlers.gutenberg.ui.internal.GutenbergCrawlerViewImageRegistry; +import edu.usc.cssl.tacit.common.Preprocessor; +import edu.usc.cssl.tacit.common.ui.composite.from.TacitFormComposite; +import edu.usc.cssl.tacit.common.ui.corpusmanagement.services.CorpusClass; +import edu.usc.cssl.tacit.common.ui.internal.TargetLocationsGroup; +import edu.usc.cssl.tacit.common.ui.outputdata.TableLayoutData; +import edu.usc.cssl.tacit.common.ui.views.ConsoleView; +import edu.usc.cssl.tacit.crawlers.gutenberg.services.GutenbergConstants; +import edu.usc.cssl.tacit.crawlers.gutenberg.services.*; +import edu.usc.cssl.tacit.common.ui.corpusmanagement.services.Corpus; +import edu.usc.cssl.tacit.common.ui.corpusmanagement.services.CMDataType; +import edu.usc.cssl.tacit.common.ui.corpusmanagement.services.CorpusClass; +import edu.usc.cssl.tacit.common.ui.corpusmanagement.services.ManageCorpora; + + + + +/** + * Naive Bayes Classifier View + */ +public class GutenbergCrawlerView extends ViewPart { + public static String ID = "edu.usc.cssl.tacit.crawlers.gutenberg.ui.view1"; + + private ScrolledForm form; + private FormToolkit toolkit; + private TableLayoutData classLayoutData; + + private Composite searchComposite; + private Button searchButton; + private Button MPButton; + private Text keywordSearchText; + + private Button bothButton; + private Button commonsButton; + private Button lordsButton; + private Button domainButton; + + Combo domainList; + private Table subdomainTable; + private Button addSubdomainBtn; + private Button removeSubdomainButton; + + private Button checkPages; + private Text pageText; + private Text corpusNameTxt; + private ElementListSelectionDialog listDialog; + + private List selectedRepresentatives; + + // Classification parameters + + private Text outputPath; + + + + private boolean canProceed = false; + + protected Job job; + + private boolean checkType = true; + boolean breakFlag = false; + + private boolean isDomain = false; + private boolean isSearch = false; + private boolean isLatest = false; + + final String[] domains = new String[]{"Animals","Children","Classics","Countries","Crime","Knowledge","Fiction","Fine Arts","General Works","Geography","History","Language and Literature","Law","Music","Periodicals","Psychology and Philosophy","Religion","Science","Social Sciences","Technology","Wars"}; + //final String[] domains = new String[]{"Animals","Children","Countries","Crime","Knowledge"}; + //final String[] domains = new String[]{"Animals","Children","Countries"}; + + public org.eclipse.swt.graphics.Image getTitleImage() { + return GutenbergCrawlerViewImageRegistry.getImageIconFactory().getImage(IGutenbergCrawlerViewConstants.IMAGE_GUTENBERG_OBJ); + } + @Override + public void createPartControl(Composite parent) { + // Creates toolkit and form + toolkit = createFormBodySection(parent, "GUTENBERG CRAWLER"); + Section section = toolkit.createSection(form.getBody(), Section.TITLE_BAR | Section.EXPANDED); + GridDataFactory.fillDefaults().grab(true, false).span(3, 1).applyTo(section); + section.setExpanded(true); + + // Create a composite to hold the other widgets + ScrolledComposite sc = new ScrolledComposite(section, SWT.H_SCROLL | SWT.V_SCROLL); + sc.setExpandHorizontal(true); + sc.setExpandVertical(true); + GridLayoutFactory.fillDefaults().numColumns(3).equalWidth(false).applyTo(sc); + + // Creates an empty to create a empty space + TacitFormComposite.createEmptyRow(toolkit, sc); + + // Create a composite that can hold the other widgets + Composite client = toolkit.createComposite(form.getBody()); + GridLayoutFactory.fillDefaults().equalWidth(true).numColumns(1).applyTo(client); + GridDataFactory.fillDefaults().grab(true, false).span(1, 1).applyTo(client); + GridLayout layout = new GridLayout();// Layout creation + layout.numColumns = 2; + + createCrawlInputParameters(toolkit, client); + // Create table layout to hold the input data + /* + classLayoutData = TacitFormComposite.createTableSection(client, toolkit, layout, "Input Details", + "Add Folder(s) or Corpus Classes to include in analysis.", true, false, true, true); + */ + + + // Add run and help button on the toolbar + addButtonsToToolBar(); + form.setImage(GutenbergCrawlerViewImageRegistry.getImageIconFactory().getImage(IGutenbergCrawlerViewConstants.IMAGE_GUTENBERG_OBJ)); + + } + + /** + * Opens a "Browse" dialog + * + * @param browseBtn + * @return + */ + protected String openBrowseDialog(Button browseBtn) { + DirectoryDialog dlg = new DirectoryDialog(browseBtn.getShell(), SWT.OPEN); + dlg.setText("Open"); + String path = dlg.open(); + return path; + } + + + /** + * Checks to ensure read permission of the given location + * + * @param location + * - Directory path + * @return + */ + public String validateInputDirectory(String location) { + File locationFile = new File(location); + if (locationFile.canRead()) { + return null; + } else { + return "Classification Input Path : Permission Denied"; + } + } + + /** + * Checks to ensure read permission of the given location + * + * @param location + * - path + * @return + */ + public String validateOutputDirectory(String location) { + File locationFile = new File(location); + if (locationFile.canWrite()) { + return null; + } else { + return "Output Path : Permission Denied"; + } + } + + /** + * Validation for "Output path" + * + * @param outputText + * @param errorMessage + * - error message to be displayed if required + * @return + */ + protected boolean outputPathListener(Text outputText, String errorMessage) { + if (outputText.getText().isEmpty()) { + form.getMessageManager().addMessage("outputPath", errorMessage, null, IMessageProvider.ERROR); + return false; + } + File tempFile = new File(outputText.getText()); + if (!tempFile.exists() || !tempFile.isDirectory()) { + form.getMessageManager().addMessage("outputPath", errorMessage, null, IMessageProvider.ERROR); + return false; + } else { + form.getMessageManager().removeMessage("outputPath"); + String message = validateOutputDirectory(outputText.getText().toString()); + if (null != message) { + form.getMessageManager().addMessage("outputPath", message, null, IMessageProvider.ERROR); + return false; + } + } + return true; + } + + /*Creates the input parameters for the crawler + */ + + private void createCrawlInputParameters(final FormToolkit toolkit, final Composite parent) { + + Section inputParamsSection = toolkit.createSection(parent, Section.TITLE_BAR | Section.EXPANDED | Section.DESCRIPTION); + GridDataFactory.fillDefaults().grab(true, false).span(1, 1).applyTo(inputParamsSection); + GridLayoutFactory.fillDefaults().numColumns(4).applyTo(inputParamsSection); + inputParamsSection.setText("Input Details"); + + ScrolledComposite sc = new ScrolledComposite(inputParamsSection, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); + sc.setExpandHorizontal(true); + sc.setExpandVertical(true); + GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(false).applyTo(sc); + + Composite mainComposite = toolkit.createComposite(inputParamsSection); + sc.setContent(mainComposite); + GridDataFactory.fillDefaults().grab(true, true).applyTo(sc); + GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(false).applyTo(mainComposite); + inputParamsSection.setClient(mainComposite); + + searchComposite = toolkit.createComposite(mainComposite); + GridDataFactory.fillDefaults().grab(true, false).span(4, 0).applyTo(searchComposite); + GridLayoutFactory.fillDefaults().numColumns(1).equalWidth(false).applyTo(searchComposite); + + Group searchGroup = new Group(searchComposite, SWT.NONE); + GridDataFactory.fillDefaults().grab(true, false).span(1, 0).applyTo(searchGroup); + GridLayoutFactory.fillDefaults().numColumns(3).equalWidth(false).applyTo(searchGroup); + searchGroup.setText("Search type:"); + + searchButton = new Button(searchGroup, SWT.RADIO); + searchButton.setText("Popular Search"); + GridDataFactory.fillDefaults().grab(false, false).indent(4,10).span(1, 0).applyTo(searchButton); + searchButton.setSelection(true); + + MPButton = new Button(searchGroup, SWT.RADIO); + MPButton.setText("Latest Search"); + GridDataFactory.fillDefaults().grab(false, false).indent(4,10).span(1, 0).applyTo(MPButton); + MPButton.setSelection(false); + + domainButton = new Button(searchGroup, SWT.RADIO); + domainButton.setText("Domain and Sub Domain Search"); + GridDataFactory.fillDefaults().grab(false, false).indent(4,10).span(1, 0).applyTo(domainButton); + domainButton.setSelection(false); + + /* + //******************************** + Group tryComposite = new Group(mainComposite, SWT.NONE); + GridLayoutFactory.fillDefaults().numColumns(3).equalWidth(true).applyTo(tryComposite); + GridDataFactory.fillDefaults().grab(true, false).span(4, 0).indent(0,20).applyTo(tryComposite); + tryComposite.setText("Keyword search:"); + + searchButton = new Button(tryComposite, SWT.RADIO); + searchButton.setText("Popular Search"); + GridDataFactory.fillDefaults().grab(false, false).indent(4,10).span(1, 0).applyTo(searchButton); + searchButton.setSelection(true); + + MPButton = new Button(tryComposite, SWT.RADIO); + MPButton.setText("Latest Search"); + GridDataFactory.fillDefaults().grab(false, false).indent(4,10).span(1, 0).applyTo(MPButton); + MPButton.setSelection(false); + + domainButton = new Button(tryComposite, SWT.RADIO); + domainButton.setText("Domain and Sub Domain Search"); + GridDataFactory.fillDefaults().grab(false, false).indent(4,10).span(1, 0).applyTo(domainButton); + domainButton.setSelection(false); + //******************************** + * + */ + + Group searchFilterComposite = new Group(mainComposite, SWT.NONE); + GridLayoutFactory.fillDefaults().numColumns(3).equalWidth(true).applyTo(searchFilterComposite); + GridDataFactory.fillDefaults().grab(true, false).span(4, 0).indent(0,20).applyTo(searchFilterComposite); + searchFilterComposite.setText("Keyword search:"); + + final Label searchLabel = new Label(searchFilterComposite, SWT.NONE); + searchLabel.setText("Keyword:"); + GridDataFactory.fillDefaults().grab(false, false).indent(4,10).span(1, 0).applyTo(searchLabel); + + keywordSearchText = new Text(searchFilterComposite, SWT.BORDER); + GridDataFactory.fillDefaults().grab(true, false).indent(0,10).span(2, 0).applyTo(keywordSearchText); + keywordSearchText.setMessage("Enter a search term"); + + final Group domainFilterComposite = new Group(mainComposite, SWT.SHADOW_IN); + GridDataFactory.fillDefaults().grab(true, false).span(4, 0).applyTo(domainFilterComposite); + domainFilterComposite.setText("Select Domain and Sub Domain:"); + GridLayoutFactory.fillDefaults().numColumns(3).applyTo(domainFilterComposite); + + Label domain = new Label(domainFilterComposite, SWT.NONE); + domain.setText("Select Domain:"); + GridDataFactory.fillDefaults().grab(false, false).span(1, 0).applyTo(domain); + + domainList = new Combo(domainFilterComposite, SWT.FLAT | SWT.READ_ONLY); + GridDataFactory.fillDefaults().grab(true, false).span(2, 0).applyTo(domainList); + toolkit.adapt(domainList); + domainList.setItems(domains); + domainList.select(0); + domainList.setEnabled(false); + + Label sortType = new Label(domainFilterComposite, SWT.NONE); + sortType.setText("Select sub-domains:"); + subdomainTable = new Table(domainFilterComposite, SWT.BORDER | SWT.MULTI); + GridDataFactory.fillDefaults().grab(true, true).span(1, 3).hint(90, 50).applyTo(subdomainTable); + subdomainTable.setEnabled(false); + + Composite buttonComp = new Composite(domainFilterComposite, SWT.NONE); + GridLayout btnLayout = new GridLayout(); + btnLayout.marginWidth = btnLayout.marginHeight = 0; + btnLayout.makeColumnsEqualWidth = false; + buttonComp.setLayout(btnLayout); + buttonComp.setLayoutData(new GridData(GridData.FILL_VERTICAL)); + + addSubdomainBtn = new Button(buttonComp, SWT.PUSH); // $NON-NLS-1$ + addSubdomainBtn.setText("Add..."); + GridDataFactory.fillDefaults().grab(false, false).span(1, 1).applyTo(addSubdomainBtn); + addSubdomainBtn.setEnabled(false); + + addSubdomainBtn.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + + ILabelProvider lp = new ArrayLabelProvider(); + listDialog = new ElementListSelectionDialog(addSubdomainBtn.getShell(), lp); + listDialog.setTitle("Select domain"); + listDialog.setMessage("Type the name of the domain"); + listDialog.setMultipleSelection(true); + listDialog.setElements(GutenbergConstants.sites.get(domainList.getSelectionIndex())); + if (listDialog.open() == Window.OK) { + updateTable(listDialog.getResult()); + } + } + + }); + + removeSubdomainButton = new Button(buttonComp, SWT.PUSH); + removeSubdomainButton.setText("Remove..."); + GridDataFactory.fillDefaults().grab(false, false).span(1, 1).applyTo(removeSubdomainButton); + removeSubdomainButton.setEnabled(false); + + removeSubdomainButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + for (TableItem item : subdomainTable.getSelection()) { + selectedRepresentatives.remove(item.getText()); + item.dispose(); + } + if (selectedRepresentatives.size() == 0) { + removeSubdomainButton.setEnabled(false); + } + } + }); + + Group limitGroup = new Group(mainComposite, SWT.SHADOW_IN); + GridDataFactory.fillDefaults().grab(true, false).span(4, 0).applyTo(limitGroup); + limitGroup.setText("Filter Results"); + GridLayoutFactory.fillDefaults().numColumns(3).applyTo(limitGroup); + + final Composite limitClient = new Composite(limitGroup, SWT.None); + GridDataFactory.fillDefaults().grab(true, false).span(1, 1).indent(10, 10).applyTo(limitClient); + GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(false).applyTo(limitClient); + + checkPages = new Button(limitClient, SWT.CHECK); + GridDataFactory.fillDefaults().grab(true, false).span(2, 0).applyTo(checkPages); + checkPages.setText("Limit Pages"); + + Label limitPages = new Label(limitClient, SWT.NONE); + limitPages.setText("Limit records per sub-domains:"); + GridDataFactory.fillDefaults().grab(false, false).span(1, 0).applyTo(limitPages); + pageText = new Text(limitClient, SWT.BORDER); + GridDataFactory.fillDefaults().grab(true, false).span(1, 0).applyTo(pageText); + pageText.setEnabled(false); + + checkPages.addSelectionListener(new SelectionListener() { + @Override + public void widgetSelected(SelectionEvent e) { + if(checkPages.getSelection()) + pageText.setEnabled(true); + else + pageText.setEnabled(false); + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + // TODO Auto-generated method stub + + } + }); + + searchButton.addSelectionListener(new SelectionListener() { + @Override + public void widgetSelected(SelectionEvent e) { + if(searchButton.getSelection()) + { + keywordSearchText.setEnabled(true); + domainList.setEnabled(false); + subdomainTable.setEnabled(false); + + } + else + { + keywordSearchText.setEnabled(false); + } + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + // TODO Auto-generated method stub + + } + }); + + MPButton.addSelectionListener(new SelectionListener() { + @Override + public void widgetSelected(SelectionEvent e) { + if(MPButton.getSelection()) + { + keywordSearchText.setEnabled(false); + domainList.setEnabled(false); + subdomainTable.setEnabled(false); + + } + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + // TODO Auto-generated method stub + + } + }); + + domainButton.addSelectionListener(new SelectionListener() { + @Override + public void widgetSelected(SelectionEvent e) { + if(domainButton.getSelection()) + { + domainList.setEnabled(true); + subdomainTable.setEnabled(true); + addSubdomainBtn.setEnabled(true); + removeSubdomainButton.setEnabled(true); + } + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + // TODO Auto-generated method stub + + } + }); + + + TacitFormComposite.createEmptyRow(toolkit, limitGroup); + + Composite client = toolkit.createComposite(form.getBody()); + GridLayoutFactory.fillDefaults().equalWidth(true).numColumns(1).applyTo(client); // Align + // the + // composite + // section + // to + // one + // column + GridDataFactory.fillDefaults().grab(true, false).span(1, 1).applyTo(client); + + TacitFormComposite.createEmptyRow(toolkit, client); + corpusNameTxt = TacitFormComposite.createCorpusSection(toolkit, client, form.getMessageManager()); + TacitFormComposite.createEmptyRow(toolkit, client); + Button btnRun = TacitFormComposite.createRunButton(client, toolkit); + + + btnRun.addSelectionListener(new SelectionListener() { + + @Override + public void widgetSelected(SelectionEvent e) { + final Job job = new Job("Gutenberg Crawler") { + String outputDir; + String corpusName; + Corpus corpus; + int pages; + boolean canProceed; + String query; + @Override + protected IStatus run(IProgressMonitor monitor) { + + TacitFormComposite.setConsoleViewInFocus(); + TacitFormComposite.updateStatusMessage(getViewSite(), null, null, form); + Display.getDefault().syncExec(new Runnable() { + @Override + public void run() { + if(checkPages.getSelection()) + pages = Integer.parseInt(pageText.getText()); + else + pages =-1; + corpusName = corpusNameTxt.getText(); + isDomain = domainButton.getSelection(); + isSearch = searchButton.getSelection(); + isLatest = MPButton.getSelection(); + query = keywordSearchText.getText(); + outputDir = IGutenbergCrawlerViewConstants.DEFAULT_CORPUS_LOCATION + File.separator+ corpusName.trim(); + if (!new File(outputDir).exists()) { + new File(outputDir).mkdirs(); + } + } + }); + + int progressSize = 30; + monitor.beginTask("Running Gutenberg Crawler...", progressSize); + TacitFormComposite.writeConsoleHeaderBegining("Gutenberg Crawler started"); + GutenbergMain objmain = new GutenbergMain(); + SearchLatest objlatest = new SearchLatest(); + SearchPopular objpopular = new SearchPopular(); + monitor.subTask("Initializing..."); + monitor.worked(10); + if (monitor.isCanceled()) + handledCancelRequest("Crawling is Stopped"); + corpus = new Corpus(corpusName, CMDataType.GUTENBERG_JSON); + if(isDomain){ + for (final String domain : selectedRepresentatives) { + outputDir = IGutenbergCrawlerViewConstants.DEFAULT_CORPUS_LOCATION + File.separator + corpusName; + outputDir += File.separator + domain; + if (!new File(outputDir).exists()) { + new File(outputDir).mkdirs(); + } + + try { + monitor.subTask("Crawling..."); + if (monitor.isCanceled()) + return handledCancelRequest("Crawling is Stopped"); + objmain.crawl(outputDir, domain, pages, monitor); + if (monitor.isCanceled()) + return handledCancelRequest("Crawling is Stopped"); + } catch (Exception e) { + return handleException(monitor, e, "Crawling failed. Provide valid data"); + } + try { + Display.getDefault().syncExec(new Runnable() { + + @Override + public void run() { + + CorpusClass cc = new CorpusClass(domain, outputDir); + cc.setParent(corpus); + corpus.addClass(cc); + + } + }); + } catch (Exception e) { + e.printStackTrace(); + return Status.CANCEL_STATUS; + } + } + } + if(isSearch) + { + System.out.println("I am inside search button"); + outputDir = IGutenbergCrawlerViewConstants.DEFAULT_CORPUS_LOCATION + File.separator + corpusName; + outputDir += File.separator + query; + if (!new File(outputDir).exists()) { + new File(outputDir).mkdirs(); + } + + try { + monitor.subTask("Crawling..."); + if (monitor.isCanceled()) + return handledCancelRequest("Crawling is Stopped"); + objpopular.popular(outputDir,pages,query, monitor); + if (monitor.isCanceled()) + return handledCancelRequest("Crawling is Stopped"); + } catch (Exception e) { + return handleException(monitor, e, "Crawling failed. Provide valid data"); + } + try { + Display.getDefault().syncExec(new Runnable() { + + @Override + public void run() { + + CorpusClass cc = new CorpusClass(query, outputDir); + cc.setParent(corpus); + corpus.addClass(cc); + + } + }); + } catch (Exception e) { + e.printStackTrace(); + return Status.CANCEL_STATUS; + } + + + } + if(isLatest) + { + + System.out.println("I am inside latest button"); + outputDir = IGutenbergCrawlerViewConstants.DEFAULT_CORPUS_LOCATION + File.separator + corpusName; + outputDir += File.separator + "latest"; + if (!new File(outputDir).exists()) { + new File(outputDir).mkdirs(); + } + + try { + monitor.subTask("Crawling..."); + if (monitor.isCanceled()) + return handledCancelRequest("Crawling is Stopped"); + objlatest.latest(outputDir,pages, monitor); + if (monitor.isCanceled()) + return handledCancelRequest("Crawling is Stopped"); + } catch (Exception e) { + return handleException(monitor, e, "Crawling failed. Provide valid data"); + } + try { + Display.getDefault().syncExec(new Runnable() { + + @Override + public void run() { + + CorpusClass cc = new CorpusClass("latest", outputDir); + cc.setParent(corpus); + corpus.addClass(cc); + + } + }); + } catch (Exception e) { + e.printStackTrace(); + return Status.CANCEL_STATUS; + } + + + + } + ManageCorpora.saveCorpus(corpus); + if (monitor.isCanceled()) + return handledCancelRequest("Crawling is Stopped"); + ConsoleView.printlInConsoleln("Created Corpus: "+corpusName); + monitor.worked(100); + monitor.done(); + return Status.OK_STATUS; + + } + }; + job.setUser(true); + boolean canProceed = canItProceed(); + if (canProceed) { + job.schedule(); // schedule the job + job.addJobChangeListener(new JobChangeAdapter() { + + public void done(IJobChangeEvent event) { + if (!event.getResult().isOK()) { + TacitFormComposite + .writeConsoleHeaderBegining("Error: Gutenberg Crawler "); + TacitFormComposite.updateStatusMessage(getViewSite(), "Crawling is stopped", + IStatus.INFO, form); + + } else { + TacitFormComposite.updateStatusMessage(getViewSite(), + "Gutenberg Crawler completed", IStatus.OK, form); + ConsoleView.printlInConsoleln("Gutenberg Crawler completed successfully."); + TacitFormComposite + .writeConsoleHeaderBegining("Success: Gutenberg Crawler "); + + } + } + }); + } + + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + // TODO Auto-generated method stub + + } + }); + } + + static class ArrayLabelProvider extends LabelProvider { + @Override + public String getText(Object element) { + return (String) element; + } + } + + public void updateTable(Object[] result) { + if (selectedRepresentatives == null) { + selectedRepresentatives = new ArrayList(); + } + + for (Object object : result) { + if (!selectedRepresentatives.contains((String) object)) + selectedRepresentatives.add((String) object); + } + + subdomainTable.removeAll(); + for (String itemName : selectedRepresentatives) { + TableItem item = new TableItem(subdomainTable, 0); + item.setText(itemName); + if (!removeSubdomainButton.isEnabled()) { + removeSubdomainButton.setEnabled(true); + } + } + + } + + + /** + * Adds "Classify" and "Help" buttons on the Naive Bayes Classifier form + */ + private void addButtonsToToolBar() { + IToolBarManager mgr = form.getToolBarManager(); + mgr.add(new Action() { + @Override + public ImageDescriptor getImageDescriptor() { + return (GutenbergCrawlerViewImageRegistry.getImageIconFactory().getImageDescriptor(IGutenbergCrawlerViewConstants.IMAGE_LRUN_OBJ)); + } + + @Override + public String getToolTipText() { + return "Crawl"; + } + + String outputDir; + String corpusName; + Corpus corpus; + int pages; + boolean canProceed; + String query; + + @Override + public void run() { + TacitFormComposite.writeConsoleHeaderBegining("Gutenberg Crawler started"); + TacitFormComposite.updateStatusMessage(getViewSite(), null, null, form); + job = new Job("Gutenberg Crawler") { + @Override + protected IStatus run(final IProgressMonitor monitor) { + TacitFormComposite.setConsoleViewInFocus(); + TacitFormComposite.updateStatusMessage(getViewSite(), null, null, form); + monitor.beginTask("Running Gutenberg Crawler...", 100); + Date dateObj = new Date(); + Display.getDefault().syncExec(new Runnable() { + @Override + public void run() { + if(checkPages.getSelection()) + pages = Integer.parseInt(pageText.getText()); + else + pages =-1; + corpusName = corpusNameTxt.getText(); + isDomain = domainButton.getSelection(); + isSearch = searchButton.getSelection(); + isLatest = MPButton.getSelection(); + query = keywordSearchText.getText(); + outputDir = IGutenbergCrawlerViewConstants.DEFAULT_CORPUS_LOCATION + File.separator+ corpusName.trim(); + if (!new File(outputDir).exists()) { + new File(outputDir).mkdirs(); + } + } + }); + //int progressSize = 0; + //if(domainButton.getSelection()) + //{ + //progressSize =selectedRepresentatives.size()*pages + 30; + //} + int progressSize = 30; + monitor.beginTask("Running Gutenberg Crawler...", progressSize); + TacitFormComposite.writeConsoleHeaderBegining("Gutenberg Crawler started"); + GutenbergMain objmain = new GutenbergMain(); + SearchLatest objlatest = new SearchLatest(); + SearchPopular objpopular = new SearchPopular(); + monitor.subTask("Initializing..."); + monitor.worked(10); + if (monitor.isCanceled()) + { + handledCancelRequest("Crawling is Stopped"); + } + corpus = new Corpus(corpusName, CMDataType.GUTENBERG_JSON); + System.out.println("Name of corpus=============" + corpus); + if(isDomain) + { + System.out.println("I am inside domain button"); + for (final String domain : selectedRepresentatives) { + System.out.println("Selected Representatives&&&&&&&&&&&&&&&&=" + selectedRepresentatives); + outputDir = IGutenbergCrawlerViewConstants.DEFAULT_CORPUS_LOCATION + File.separator + corpusName; + outputDir += File.separator + domain; + if (!new File(outputDir).exists()) { + new File(outputDir).mkdirs(); + } + + try { + monitor.subTask("Crawling..."); + if (monitor.isCanceled()) + return handledCancelRequest("Crawling is Stopped"); + objmain.crawl(outputDir, domain, pages, monitor); + if (monitor.isCanceled()) + return handledCancelRequest("Crawling is Stopped"); + } catch (Exception e) { + return handleException(monitor, e, "Crawling failed. Provide valid data"); + } + try { + Display.getDefault().syncExec(new Runnable() { + + @Override + public void run() { + + CorpusClass cc = new CorpusClass(domain, outputDir); + cc.setParent(corpus); + corpus.addClass(cc); + + } + }); + } catch (Exception e) { + e.printStackTrace(); + return Status.CANCEL_STATUS; + } + } + } + if(isSearch) + { + System.out.println("I am inside search button"); + outputDir = IGutenbergCrawlerViewConstants.DEFAULT_CORPUS_LOCATION + File.separator + corpusName; + outputDir += File.separator + query; + if (!new File(outputDir).exists()) { + new File(outputDir).mkdirs(); + } + + try { + monitor.subTask("Crawling..."); + if (monitor.isCanceled()) + return handledCancelRequest("Crawling is Stopped"); + objpopular.popular(outputDir,pages,query, monitor); + if (monitor.isCanceled()) + return handledCancelRequest("Crawling is Stopped"); + } catch (Exception e) { + return handleException(monitor, e, "Crawling failed. Provide valid data"); + } + try { + Display.getDefault().syncExec(new Runnable() { + + @Override + public void run() { + + CorpusClass cc = new CorpusClass(query, outputDir); + cc.setParent(corpus); + corpus.addClass(cc); + + } + }); + } catch (Exception e) { + e.printStackTrace(); + return Status.CANCEL_STATUS; + } + + + } + if(isLatest) + { + + System.out.println("I am inside latest button"); + outputDir = IGutenbergCrawlerViewConstants.DEFAULT_CORPUS_LOCATION + File.separator + corpusName; + outputDir += File.separator + "latest"; + if (!new File(outputDir).exists()) { + new File(outputDir).mkdirs(); + } + + try { + monitor.subTask("Crawling..."); + if (monitor.isCanceled()) + return handledCancelRequest("Crawling is Stopped"); + objlatest.latest(outputDir,pages, monitor); + if (monitor.isCanceled()) + return handledCancelRequest("Crawling is Stopped"); + } catch (Exception e) { + return handleException(monitor, e, "Crawling failed. Provide valid data"); + } + try { + Display.getDefault().syncExec(new Runnable() { + + @Override + public void run() { + + CorpusClass cc = new CorpusClass("latest", outputDir); + cc.setParent(corpus); + corpus.addClass(cc); + + } + }); + } catch (Exception e) { + e.printStackTrace(); + return Status.CANCEL_STATUS; + } + + + + } + ManageCorpora.saveCorpus(corpus); + if (monitor.isCanceled()) + return handledCancelRequest("Crawling is Stopped"); + ConsoleView.printlInConsoleln("Created Corpus: "+corpusName); + monitor.worked(100); + monitor.done(); + return Status.OK_STATUS; + } + }; + job.setUser(true); + canProceed = canItProceed(); + if (canProceed) { + job.schedule(); // schedule the job + job.addJobChangeListener(new JobChangeAdapter() { + public void done(IJobChangeEvent event) { + if (!event.getResult().isOK()) { + TacitFormComposite + .writeConsoleHeaderBegining("Error: Gutenberg Crawler"); + } else { + TacitFormComposite.updateStatusMessage(getViewSite(), + "Gutenberg Crawler completed", IStatus.OK, form); + ConsoleView.printlInConsoleln("Gutenberg Crawler completed successfully."); + TacitFormComposite + .writeConsoleHeaderBegining("Success: Gutenberg Crawler "); + + } + } + }); + } + }; + + + + + }); + + Action helpAction = new Action() { + @Override + public ImageDescriptor getImageDescriptor() { + return (GutenbergCrawlerViewImageRegistry.getImageIconFactory().getImageDescriptor(IGutenbergCrawlerViewConstants.IMAGE_HELP_CO)); + } + + @Override + public String getToolTipText() { + return "Help"; + } + + @Override + public void run() { + PlatformUI.getWorkbench().getHelpSystem() + .displayHelp("edu.usc.cssl.tacit.classify.naivebayes.ui.naivebayes"); + }; + }; + mgr.add(helpAction); + PlatformUI.getWorkbench().getHelpSystem().setHelp(helpAction, + "edu.usc.cssl.tacit.classify.naivebayes.ui.naivebayes"); + PlatformUI.getWorkbench().getHelpSystem().setHelp(form, "edu.usc.cssl.tacit.classify.naivebayes.ui.naivebayes"); + form.getToolBarManager().update(true); + } + + /** + * Handles cancel request by sending appropriate message to UI + * + * @param message + * @return + */ + private IStatus handledCancelRequest(String message) { + TacitFormComposite.updateStatusMessage(getViewSite(), message, IStatus.ERROR, form); + ConsoleView.printlInConsoleln("Gutenberg Crawler cancelled."); + return Status.CANCEL_STATUS; + + } + + /** + * Validates the input form to ensure correctness + * + * @param classPaths + * @return + */ + private boolean canItProceed() { + + form.getMessageManager().removeAllMessages(); + Boolean isDomaincheck; + Boolean isSearchcheck; + + isDomaincheck = domainButton.getSelection(); + System.out.println("value of ------------------------" + isDomaincheck); + if(isDomaincheck) + { + System.out.println("I am inside"); + try{ + if(selectedRepresentatives.isEmpty()){ + form.getMessageManager().addMessage("DomainError", "Enter atleast one sub domain name", null, + IMessageProvider.ERROR); + return false; + }else{ + form.getMessageManager().removeMessage("DomainError"); + } + }catch(Exception e){ + form.getMessageManager().addMessage("DomainError", "Enter atleast one sub domain name", null, + IMessageProvider.ERROR); + return false; + } + } + isSearchcheck = searchButton.getSelection(); + if(isSearchcheck) + { + try{ + String query = keywordSearchText.getText(); + if(query == null || query.isEmpty()) + { + form.getMessageManager().addMessage("keyword", "Enter the keyword to be crawled", null, + IMessageProvider.ERROR); + return false; + }else + form.getMessageManager().removeMessage("pageLimit"); + }catch (Exception e) { + form.getMessageManager().addMessage("keyword", "Enter the keyword to be crawled", null, + IMessageProvider.ERROR); + return false; + } + } + try { + int pages = Integer.parseInt(pageText.getText()); + if (pages < 1) { + form.getMessageManager().addMessage("pageLimit", "Enter the number of pages to be crawled", null, + IMessageProvider.ERROR); + return false; + } else + form.getMessageManager().removeMessage("pageLimit"); + } catch (Exception e) { + form.getMessageManager().addMessage("pageLimit", "Enter the number of pages to be crawled", null, + IMessageProvider.ERROR); + return false; + } + + // Validate corpus name + String corpusName = corpusNameTxt.getText(); + if (null == corpusName || corpusName.isEmpty()) { + form.getMessageManager().addMessage("corpusName", "Provide corpus name", null, IMessageProvider.ERROR); + return false; + } else { + String outputDir = IGutenbergCrawlerViewConstants.DEFAULT_CORPUS_LOCATION + File.separator + corpusName; + if (new File(outputDir).exists()) { + form.getMessageManager().addMessage("corpusName", "Corpus already exists", null, + IMessageProvider.ERROR); + return false; + } else { + form.getMessageManager().removeMessage("corpusName"); + return true; + } + } + + + } + + /** + * Maps each class to its selected files + * + * @param classLayoutData + * @param classPaths + */ + protected void consolidateSelectedFiles(TableLayoutData classLayoutData, Map> classPaths) { + Tree tree = classLayoutData.getTree(); + for (int i = 0; i < tree.getItemCount(); i++) { + TreeItem temp = tree.getItem(i); + if (temp.getChecked()) { + classPaths.put(temp.getData().toString(), classLayoutData.getSelectedItems(temp)); + } + } + } + + /** + * Function to be called incase of exception + * + * @param monitor + * @param e + * @param message + * @return + */ + private IStatus handleException(IProgressMonitor monitor, Exception e, String message) { + monitor.done(); + System.out.println(message); + e.printStackTrace(); + TacitFormComposite.updateStatusMessage(getViewSite(), message + e.getMessage(), IStatus.ERROR, form); + return Status.CANCEL_STATUS; + } + + @Override + public void setFocus() { + form.setFocus(); + } + + /** + * Output file creation with statistics + * + * @param location + * @param title + * @param dateObj + * @param perf + * @param kValue + * @param monitor + */ + + + /** + * + * @param parent + * @param title + * @return - Creates a form body section for Naive Bayes Classifier + */ + private FormToolkit createFormBodySection(Composite parent, String title) { + // Every interface requires a toolkit(Display) and form to store the + // components + FormToolkit toolkit = new FormToolkit(parent.getDisplay()); + form = toolkit.createScrolledForm(parent); + toolkit.decorateFormHeading(form.getForm()); + form.setText(title); + GridLayoutFactory.fillDefaults().numColumns(1).equalWidth(true).applyTo(form.getBody()); + return toolkit; + } + +} diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/handlers/GutenbergCrawlerViewHandler.java b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/handlers/GutenbergCrawlerViewHandler.java new file mode 100644 index 00000000..ce83a31d --- /dev/null +++ b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/handlers/GutenbergCrawlerViewHandler.java @@ -0,0 +1,24 @@ +package edu.usc.cssl.tacit.crawlers.gutenberg.ui.handlers; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.handlers.HandlerUtil; + +import edu.usc.cssl.tacit.crawlers.gutenberg.ui.GutenbergCrawlerView; + +public class GutenbergCrawlerViewHandler extends AbstractHandler{ + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + try { + HandlerUtil.getActiveWorkbenchWindowChecked(event). + getActivePage().showView(GutenbergCrawlerView.ID); + + } catch (PartInitException e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/internal/GutenbergCrawlerViewImageRegistry.java b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/internal/GutenbergCrawlerViewImageRegistry.java new file mode 100644 index 00000000..330eb8ab --- /dev/null +++ b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/internal/GutenbergCrawlerViewImageRegistry.java @@ -0,0 +1,46 @@ +package edu.usc.cssl.tacit.crawlers.gutenberg.ui.internal; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.ImageRegistry; +import org.eclipse.swt.graphics.Image; + +public class GutenbergCrawlerViewImageRegistry{ + + ImageRegistry ir = new ImageRegistry(); + static GutenbergCrawlerViewImageRegistry imgIcon; + + //Returns the descriptor associated with the given key in this registry, or null if none. + public ImageDescriptor getImageDescriptor(String key) { + return ir.getDescriptor(key); + } + + private GutenbergCrawlerViewImageRegistry(){ + + + ir.put(IGutenbergCrawlerViewConstants .IMAGE_LRUN_OBJ, ImageDescriptor + .createFromFile(GutenbergCrawlerViewImageRegistry.class, "/icons/lrun_obj.gif")); + + ir.put(IGutenbergCrawlerViewConstants .IMAGE_HELP_CO, ImageDescriptor + .createFromFile(GutenbergCrawlerViewImageRegistry.class, "/icons/help_contents.gif")); + + ir.put(IGutenbergCrawlerViewConstants .IMAGE_GUTENBERG_OBJ, ImageDescriptor + .createFromFile(GutenbergCrawlerViewImageRegistry.class, "/icons/GutenbergCrawlerIcon.png")); + } + + public static GutenbergCrawlerViewImageRegistry getImageIconFactory() { + if (imgIcon == null) { + imgIcon = new GutenbergCrawlerViewImageRegistry(); + } + return imgIcon; + + } + + + public Image getImage(String imageName) { + return ir.get(imageName); + } + +} + + +/* This file handles creation of images from the gif files we provide and allocating OS resources for image to get displayed */ \ No newline at end of file diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/internal/IGutenbergCrawlerViewConstants.java b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/internal/IGutenbergCrawlerViewConstants.java new file mode 100644 index 00000000..7c0b5f37 --- /dev/null +++ b/edu.usc.cssl.tacit.crawlers.gutenberg.ui/src/edu/usc/cssl/tacit/crawlers/gutenberg/ui/internal/IGutenbergCrawlerViewConstants.java @@ -0,0 +1,11 @@ +package edu.usc.cssl.tacit.crawlers.gutenberg.ui.internal; + +public interface IGutenbergCrawlerViewConstants { + public static final String IMAGE_LRUN_OBJ = "lrun_obj"; + public static final String IMAGE_HELP_CO = "help_co"; + public static final String IMAGE_FILE_OBJ = "File_obj"; + public static final String IMAGE_FOLDER_OBJ = "Foler_obj"; + public static final String IMAGE_GUTENBERG_OBJ = "gutenberg_crawler"; + String DEFAULT_CORPUS_LOCATION = System.getProperty("user.dir") + System.getProperty("file.separator") + "json_corpuses" + System.getProperty("file.separator") + "gutenberg"; +} + diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg/META-INF/MANIFEST.MF b/edu.usc.cssl.tacit.crawlers.gutenberg/META-INF/MANIFEST.MF new file mode 100644 index 00000000..a1b592b1 --- /dev/null +++ b/edu.usc.cssl.tacit.crawlers.gutenberg/META-INF/MANIFEST.MF @@ -0,0 +1,15 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Gutenberg +Bundle-SymbolicName: edu.usc.cssl.tacit.crawlers.gutenberg +Bundle-Version: 1.0.0.qualifier +Bundle-Activator: edu.usc.cssl.tacit.crawlers.gutenberg.Activator +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.jsoup;bundle-version="1.7.2", + edu.usc.cssl.tacit.common.ui;bundle-version="1.0.0" +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Bundle-ActivationPolicy: lazy +Export-Package: edu.usc.cssl.tacit.crawlers.gutenberg.services +Bundle-ClassPath: jackson-core-2.5.0.jar, + . diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg/build.properties b/edu.usc.cssl.tacit.crawlers.gutenberg/build.properties new file mode 100644 index 00000000..1ce3283d --- /dev/null +++ b/edu.usc.cssl.tacit.crawlers.gutenberg/build.properties @@ -0,0 +1,5 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + jackson-core-2.5.0.jar diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg/jackson-core-2.5.0.jar b/edu.usc.cssl.tacit.crawlers.gutenberg/jackson-core-2.5.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..e8ca122f7d814117876e09f1e17db171bb4d970d GIT binary patch literal 229685 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 z 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�Xfv~#wgbF^z%w%(}x_kubC@eyzjd^6Sg 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 site2Link = new HashMap(); + public static HashMap sites = new HashMap(); + static String animals[] = new String[]{"Birds", + "Insects", + "Mammals", + "Reptiles and Amphibians", + "Trapping"}; + + static String children[] = new String[]{"Anthologies", + "Biography", + "Book Series", + "Verse", + "Christmas", + "Fiction", + "History", + "Instructional Books", + "Literature", + "Myths and Fairy Tales", + "Religion", + "School Stories" + + }; + + static String classics[] = new String[]{"Classics"}; + + static String Countries[] =new String[]{"Africa", + "Argentina", + "Australia", + "Bulgaria", + "Canada", + "Czech", + "Egypt", + "France", + "Germany", + "Greece", + "India", + "Italy", + "New Zealand", + "Norway", + "South Africa", + "South America", + "Travel", + "United Kingdom", + "United States" + }; + static String Crime[] = new String[]{"Crime Fiction", + "Crime Non Fiction", + "Detective Fiction", + "Mystery Fiction" + }; + + static String Knowledge[] = new String[]{"Education", + "Language Education" + }; + + static String fiction[] = new String[]{"Adventure", + "Children's Fiction", + "Crime Fiction", + "Detective Fiction", + "Erotic Fiction", + "Fantasy", + "General Fiction", + "Gothic Fiction", + "Historical Fiction", + "Horror", + "Humor", + "Movie Books", + "Mystery Fiction", + "Precursors of Science Fiction", + "Romantic Fiction", + "School Stories", + "Science Fiction", + "Western" + }; + + static String fine_arts[] = new String[]{"Architecture", + "Art" + }; + + static String general_works[] = new String[]{"Children's Periodicals:Dew Drops", + "Children's Periodicals:The Girls Own Paper", + "Children's Periodicals:Golden Days for Boys and Girls", + "Children's Periodicals:The Great Round World And What Is Going On In It", + "Children's Periodicals:The Nursery", + "Children's Periodicals:St. Nicholas Magazine for Boys and Girls", + "Reference" + }; + + static String geography[] = new String[]{"Anthropology", + "CIA World Factbooks", + "Folklore", + "Maps and Cartography", + "Women's Travel Journals" + }; + + static String history[] = new String[]{"Archaeology", + "Biographies", + "Children's History", + "Classical Antiquity" + }; + + static String language_and_literature[] = new String[]{"Esperanto", + "German Language Books", + "Language Education", + "Plays" + }; + + static String law[] = new String[]{"British Law", + "Canon Law", + "Noteworthy Trials", + "United States Law" + }; + + static String music[] = new String[]{"Music", + "Opera" + }; + + static String periodicals[] = new String[]{"Ainslee's", + "The Aldine", + "The American Architect and Building News", + "The American Journal of Archaeology", + "The American Missionary", + "The American Quarterly Review", + "The Arena", + "The Argosy", + "Armour's Monthly Cook Book", + "Astounding Stories", + "The Atlantic Monthly", + "The Baptist Magazine", + "Barnavännen", + "The Bay State Monthly", + "Bird-Lore", + "Birds, Illustrated by Color Photography", + "Blackwood's Edinburgh Magazine", + "The Botanical Magazine", + "The Brochure Series of Architectural Illustration", + "Buchanan's Journal of Man", + "Bulletin of Lille", //French.Page requires translation + "The Catholic World", + "Celtic Magazine", + "Chambers's Edinburgh Journal", + "The Christian Foundation", + "The Church of England Magazine", + "The Contemporary Review", + "Continental Monthly", + "Current History", + "De Aarde en haar Volken", //Other language.Page requires translation + "Donahoe's Magazine", + "The Economist", + "The Esperantist", + "The Galaxy", + "Garden and Forest", + "Godey's Lady's Book", + "Graham's Magazine", + "Harper's New Monthly Magazine", + "Harper's Young People", + "The Idler", + "The Illustrated War News", + "The International Magazine of Literature, Art, and Science", + "The Irish Ecclesiastical Record", + "The Irish Penny Journal", + "Journal of Entomology and Zoology", + "The Journal of Negro History", + "The Knickerbocker", + "L'Illustration", + "Lippincott's Magazine", + "Little Folks", + "London Medical Gazette", + "The Mayflower", + "McClure's Magazine", + "The Menorah Journal", + "The Mentor", + "The Mirror of Literature, Amusement, and Instruction", + "The Mirror of Taste, and Dramatic Censor", + "Mother Earth", + "Mrs Whittelsey's Magazine for Mothers and Daughters", + "The National Preacher", + "The North American Medical and Surgical Journal", + "Northern Nut Growers Association", + "Notes and Queries", + "Our Young Folks", + "Poetry, A Magazine of Verse", + "Popular Science Monthly", + "Prairie Farmer", + "Punch", + "Punchinello", + "Scientific American", + "The Scrap Book", + "Scribner's Magazine", + "The Speaker", + "The Stars and Stripes", + "The Strand Magazine", + "The Haslemere Museum Gazette", + "The Unpopular Review", + "The Writer", + "The Yellow Book", + + }; + + static String psychology_and_philosophy[] = new String[]{"Bibliomania", + "Philosophy", + "Psychology", + "Witchcraft" + }; + + static String religion[] = new String[]{"Atheism", + "Bahá'í Faith", + "Buddhism", + "Christianity", + "Hinduism", + "Islam", + "Judaism", + "Latter Day Saints", + "Mythology", + "Paganism" + }; + + static String science[] = new String[]{"Astronomy", + "Biology", + "Botany", + "Chemistry", + "Ecology", + "Geology", + "Mathematics", + "Microbiology", + "Microscopy", + "Mycology", + "Natural History", + "Physics", + "Physiology", + "Science", + "Scientific American", + "Zoology" + }; + + static String social_sciences[] = new String[]{"Anarchism", + "Racism", + "Slavery", + "Sociology", + "Suffrage", + "Transportation" + }; + + static String technology[] = new String[]{"Cookery", + "Crafts", + "Engineering", + "Manufacturing", + "Technology", + "Woodwork" + + }; + + static String wars[] = new String[]{"American Revolutionary War", + "Boer War", + "English Civil War", + "Spanish American War", + "US Civil War", + "World War I", + "World War II" + }; + + static{ + sites.put(0, animals); + sites.put(1, children); + sites.put(2,classics); + sites.put(3, Countries); + sites.put(4, Crime); + sites.put(5, Knowledge); + sites.put(6, fiction); + sites.put(7, fine_arts); + sites.put(8, general_works); + sites.put(9, geography); + sites.put(10, history); + sites.put(11, language_and_literature); + sites.put(12, law); + sites.put(13, music); + sites.put(14, periodicals); + sites.put(15, psychology_and_philosophy); + sites.put(16, religion); + sites.put(17, science); + sites.put(18, social_sciences); + sites.put(19, technology); + sites.put(20, wars); + site2Link.put("Birds", "Animals-Wild_(Bookshelf)-Birds"); + site2Link.put("Insects", "Animals-Wild_(Bookshelf)-Insects"); + site2Link.put("Mammals", "Animals-Wild_(Bookshelf)-Mammals"); + site2Link.put("Reptiles and Amphibians", "Animals-Wild_(Bookshelf)-Reptiles_and_Amphibians"); + site2Link.put("Trapping", "Animals-Wild_(Bookshelf)-Trapping"); + + site2Link.put("Anthologies", "Children%27s_Anthologies_(Bookshelf)"); + site2Link.put("Biography", "Children%27s_Biography_(Bookshelf)"); + site2Link.put("Book Series", "Children%27s_Book_Series_(Bookshelf)"); + site2Link.put("Verse", "Children%27s_Verse_(Bookshelf)"); + site2Link.put("Christmas", "Christmas_(Bookshelf)"); + site2Link.put("Fiction", "Children%27s_Fiction_(Bookshelf)"); + site2Link.put("History", "Children%27s_History_(Bookshelf)"); + site2Link.put("Instructional Books", "Children%27s_Instructional_Books_(Bookshelf)"); + site2Link.put("Literature", "Children%27s_Literature_(Bookshelf)"); + site2Link.put("Myths and Fairy Tales", "Children%27s_Myths,_Fairy_Tales,_etc._(Bookshelf)"); + site2Link.put("Religion", "Children%27s_Religion_(Bookshelf)"); + site2Link.put("School Stories", "School_Stories_(Bookshelf)"); + + site2Link.put("Classics", "Category:Classics_Bookshelf"); + + site2Link.put("Africa", "Africa_(Bookshelf)"); + site2Link.put("Argentina", "Argentina_(Bookshelf)"); + site2Link.put("Australia", "Australia_(Bookshelf)"); + site2Link.put("Bulgaria","Bulgaria_(Bookshelf)"); + site2Link.put("Canada","Canada_(Bookshelf)"); + site2Link.put("Czech","Czech_(Bookshelf)"); + site2Link.put("Egypt","Egypt_(Bookshelf)"); + site2Link.put("France","France_(Bookshelf)"); + site2Link.put("Germany","Germany_(Bookshelf)"); + site2Link.put("Greece","Greece_(Bookshelf)"); + site2Link.put("India","India_(Bookshelf)"); + site2Link.put("Italy","Italy_(Bookshelf)"); + site2Link.put("New Zealand","New_Zealand"); + site2Link.put("Norway","Norway_(Bookshelf)"); + site2Link.put("South Africa","South_Africa_(Bookshelf)"); + site2Link.put("South America","South_America_(Bookshelf)"); + site2Link.put("Travel","Travel_(Bookshelf)"); + site2Link.put("United Kingdom","United_Kingdom_(Bookshelf)"); + site2Link.put("United States","United_States_(Bookshelf)"); + + site2Link.put("Crime Fiction","Crime_Fiction_(Bookshelf)"); + site2Link.put("Crime Non Fiction","Crime_Nonfiction_(Bookshelf)"); + site2Link.put("Detective Fiction","Detective_Fiction_(Bookshelf)"); + site2Link.put("Mystery Fiction","Mystery_Fiction_(Bookshelf)"); + + site2Link.put("Education","Education"); + site2Link.put("Language Education","Language_Education_(Bookshelf)"); + + site2Link.put("Adventure","Adventure_(Bookshelf)"); + site2Link.put("Children's Fiction","Children%27s_Fiction_(Bookshelf)"); + site2Link.put("Crime Fiction","Crime_Fiction_(Bookshelf)"); + site2Link.put("Detective Fiction","Detective_Fiction_(Bookshelf)"); + site2Link.put("Erotic Fiction","Erotic_Fiction_(Bookshelf)"); + site2Link.put("Fantasy","Fantasy_(Bookshelf)"); + site2Link.put("General Fiction","General_Fiction"); + site2Link.put("Gothic Fiction","Gothic_Fiction_(Bookshelf)"); + site2Link.put("Historical Fiction","Historical_Fiction_(Bookshelf)"); + site2Link.put("Horror","Horror_(Bookshelf)"); + site2Link.put("Humor","Humor_(Bookshelf)"); + site2Link.put("Movie Books","Movie_Books_(Bookshelf)"); + site2Link.put("Mystery Fiction","Mystery_Fiction_(Bookshelf)"); + site2Link.put("Precursors of Science Fiction","Precursors_of_Science_Fiction_(Bookshelf)"); + site2Link.put("Romantic Fiction","Romantic_Fiction_(Bookshelf)"); + site2Link.put("School Stories","School_Stories_(Bookshelf)"); + site2Link.put("Science Fiction","Science_Fiction_(Bookshelf)"); + site2Link.put("Western","Western_(Bookshelf)"); + + site2Link.put("Architecture","Architecture_(Bookshelf)"); + site2Link.put("Art","Art_(Bookshelf)"); + + site2Link.put("Children's Periodicals:Dew Drops","Dew_Drops_(Bookshelf)"); + site2Link.put("Children's Periodicals:The Girls Own Paper","The_Girls_Own_Paper_(Bookshelf)"); + site2Link.put("Children's Periodicals:Golden Days for Boys and Girls","Golden_Days_for_Boys_and_Girls_(Bookshelf)"); + site2Link.put("Children's Periodicals:The Great Round World And What Is Going On In It","The_Great_Round_World_And_What_Is_Going_On_In_It_(Bookshelf)"); + site2Link.put("Children's Periodicals:The Nursery","The_Nursery_(Bookshelf)"); + site2Link.put("Children's Periodicals:St. Nicholas Magazine for Boys and Girls","St._Nicholas_Magazine_for_Boys_and_Girls_(Bookshelf)"); + site2Link.put("Reference","Reference_(Bookshelf)"); + + site2Link.put("Anthropology","Anthropology_(Bookshelf)"); + site2Link.put("CIA World Factbooks","CIA_World_Factbooks_(Bookshelf)"); + site2Link.put("Folklore","Folklore_(Bookshelf)"); + site2Link.put("Maps and Cartography","Maps_and_Cartography_(Bookshelf)"); + site2Link.put("Women's Travel Journals","Women%27s_Travel_Journals_(Bookshelf)"); + + site2Link.put("Archaeology","Archaeology_(Bookshelf)"); + site2Link.put("Biographies","Biographies_(Bookshelf)"); + site2Link.put("Children's History","Children%27s_History_(Bookshelf)"); + site2Link.put("Classical Antiquity","Classical_Antiquity_(Bookshelf)"); + + site2Link.put("Esperanto","Esperanto_(Bookshelf)"); + site2Link.put("German Language Books","German_Language_Books_(Bookshelf)"); + site2Link.put("Language Education","Language_Education_(Bookshelf)"); + site2Link.put("Plays","Plays_(Bookshelf)"); + + site2Link.put("British Law","British_Law_(Bookshelf)"); + site2Link.put("Canon Law","Canon_Law"); + site2Link.put("Noteworthy Trials","Noteworthy_Trials(Bookshelf)"); + site2Link.put("United States Law","United_States_Law_(Bookshelf)"); + + site2Link.put("Music","Music_(Bookshelf)"); + site2Link.put("Opera","Opera_(Bookshelf)"); + + site2Link.put("Bibliomania","Bibliomania_(Bookshelf)"); + site2Link.put("Philosophy","Philosophy_(Bookshelf)"); + site2Link.put("Psychology","Psychology_(Bookshelf)"); + site2Link.put("Witchcraft","Witchcraft_(Bookshelf)"); + + site2Link.put("Atheism","Atheism_(Bookshelf)"); + site2Link.put("Bahá'í Faith","Bahá%27í_Faith_(Bookshelf)"); + site2Link.put("Buddhism","Buddhism_(Bookshelf)"); + site2Link.put("Christianity","Christianity_(Bookshelf)"); + site2Link.put("Hinduism","Hinduism_(Bookshelf)"); + site2Link.put("Islam","Islam_(Bookshelf)"); + site2Link.put("Judaism","Judaism_(Bookshelf)"); + site2Link.put("Latter Day Saints","Latter_Day_Saints_(Bookshelf)"); + site2Link.put("Mythology","Mythology_(Bookshelf)"); + site2Link.put("Paganism","Paganism_(Bookshelf)"); + + site2Link.put("Astronomy","Astronomy_(Bookshelf)"); + site2Link.put("Biology","Biology_(Bookshelf)"); + site2Link.put("Botany","Botany_(Bookshelf)"); + site2Link.put("Chemistry","Chemistry_(Bookshelf)"); + site2Link.put("Ecology","Ecology_(Bookshelf)"); + site2Link.put("Geology","Geology_(Bookshelf)"); + site2Link.put("Mathematics","Mathematics_(Bookshelf)"); + site2Link.put("Microbiology","Microbiology_(Bookshelf)"); + site2Link.put("Microscopy","Microscopy_(Bookshelf)"); + site2Link.put("Mycology","Mycology_(Bookshelf)"); + site2Link.put("Natural History","Natural_History_(Bookshelf)"); + site2Link.put("Physics","Physics_(Bookshelf)"); + site2Link.put("Physiology","Physiology_(Bookshelf)"); + site2Link.put("Science","Science"); + site2Link.put("Scientific American","Scientific_American_(Bookshelf)"); + site2Link.put("Zoology","Zoology_(Bookshelf)"); + + site2Link.put("Anarchism","Anarchism_(Bookshelf)"); + site2Link.put("Racism","Racism_(Bookshelf)"); + site2Link.put("Slavery","Slavery_(Bookshelf)"); + site2Link.put("Sociology","Sociology_(Bookshelf)"); + site2Link.put("Suffrage","Suffrage"); + site2Link.put("Transportation","Transportation_(Bookshelf)"); + + site2Link.put("Energy Research","fenrg"); + site2Link.put("ICT","fict"); + site2Link.put("Materials","fmats"); + site2Link.put("Mechanical Engineering","fmech"); + site2Link.put("Robotics and AI","frobt"); + site2Link.put("Communication","fcomm"); + site2Link.put("Digital Humanities","fdigh"); + site2Link.put("Sociology","fsoc"); + + site2Link.put("Cookery","Cookery_(Bookshelf)"); + site2Link.put("Crafts","Crafts_(Bookshelf)"); + site2Link.put("Engineering","Engineering_(Bookshelf)"); + site2Link.put("Manufacturing","Manufacturing"); + site2Link.put("Technology","Technology_(Bookshelf)"); + site2Link.put("Woodwork","Woodwork"); + + site2Link.put("American Revolutionary War","American_Revolutionary_War_(Bookshelf)"); + site2Link.put("Boer War","Boer_War_(Bookshelf)"); + site2Link.put("English Civil War","English_Civil_War_(Bookshelf)"); + site2Link.put("Spanish American War","Spanish_American_War_(Bookshelf)"); + site2Link.put("US Civil War","US_Civil_War_(Bookshelf)"); + site2Link.put("World War I","World_War_I_(Bookshelf)"); + site2Link.put("World War II","World_War_II_(Bookshelf)"); + + site2Link.put("Ainslee's","Ainslee%27s_(Bookshelf)"); + site2Link.put("The Aldine","The_Aldine_(Bookshelf)"); + site2Link.put("The American Architect and Building News","The_American_Architect_and_Building_News_(Bookshelf)"); + site2Link.put("The American Journal of Archaeology","The_American_Journal_of_Archaeology_(Bookshelf)"); + site2Link.put("The American Missionary","The_American_Missionary_(Bookshelf)"); + site2Link.put("The American Quarterly Review","The_American_Quarterly_Review_(Bookshelf)"); + site2Link.put("The Arena","The_Arena_(Bookshelf)"); + site2Link.put("The Argosy","The_Argosy_(Bookshelf)"); + site2Link.put("Armour's Monthly Cook Book","Armour%27s_Monthly_Cook_Book_(Bookshelf)"); + site2Link.put("Astounding Stories","Astounding_Stories_(Bookshelf)"); + site2Link.put("The Atlantic Monthly","The_Atlantic_Monthly_(Bookshelf)"); + site2Link.put("The Baptist Magazine","The_Baptist_Magazine_(Bookshelf)"); + site2Link.put("Barnavännen","Barnavännen_(Bookshelf)"); + site2Link.put("The Bay State Monthly","The_Bay_State_Monthly_(Bookshelf)"); + site2Link.put("Bird-Lore","Bird-Lore_(Bookshelf)"); + site2Link.put("Birds, Illustrated by Color Photography","Birds,_Illustrated_by_Color_Photography_(Bookshelf)"); + site2Link.put("Blackwood's Edinburgh Magazine","Blackwood%27s_Edinburgh_Magazine_(Bookshelf)"); + site2Link.put("The Botanical Magazine","The_Botanical_Magazine_(Bookshelf)"); + site2Link.put("The Brochure Series of Architectural Illustration","The_Brochure_Series_of_Architectural_Illustration_(Bookshelf)"); + site2Link.put("Buchanan's Journal of Man","Buchanan%27s_Journal_of_Man_(Bookshelf)"); + site2Link.put("Bulletin of Lille","Bulletin_de_Lille_(Bookshelf)"); + site2Link.put("The Catholic World","The_Catholic_World_(Bookshelf)"); + site2Link.put("Celtic Magazine","Celtic_Magazine_(Bookshelf)"); + site2Link.put("Chambers's Edinburgh Journal","Chambers%27s_Edinburgh_Journal_(Bookshelf)"); + site2Link.put("The Christian Foundation","The_Christian_Foundation_(Bookshelf)"); + site2Link.put("The Church of England Magazine","The_Church_of_England_Magazine_(Bookshelf)"); + site2Link.put("The Contemporary Review","The_Contemporary_Review_(Bookshelf)"); + site2Link.put("Continental Monthly","Continental_Monthly_(Bookshelf)"); + site2Link.put("Current History","Current_History_(Bookshelf)"); + site2Link.put("De Aarde en haar Volken","De_Aarde_en_haar_Volken_(Bookshelf)"); + site2Link.put("Donahoe's Magazine","Donahoe%27s_Magazine_(Bookshelf)"); + site2Link.put("The Economist","The_Economist_(Bookshelf)"); + site2Link.put("The Esperantist","The_Esperantist_(Bookshelf)"); + site2Link.put("The Galaxy","The_Galaxy_(Bookshelf)"); + site2Link.put("Garden and Forest","Garden_and_Forest_(Bookshelf)"); + site2Link.put("Godey's Lady's Book","Godey%27s_Lady%27s_Book_(Bookshelf)"); + site2Link.put("Graham's Magazine","Graham%27s_Magazine_(Bookshelf)"); + site2Link.put("Harper's New Monthly Magazine","Harper%27s_New_Monthly_Magazine_(Bookshelf)"); + site2Link.put("Harper's Young People","Harper%27s_Young_People_(Bookshelf)"); + site2Link.put("The Idler","The_Idler_(Bookshelf)"); + site2Link.put("The Illustrated War News","The_Illustrated_War_News_(Bookshelf)"); + site2Link.put("The International Magazine of Literature, Art, and Science","The_International_Magazine_of_Literature,_Art,_and_Science_(Bookshelf)"); + site2Link.put("The Irish Ecclesiastical Record","The_Irish_Ecclesiastical_Record_(Bookshelf)"); + site2Link.put("The Irish Penny Journal","The_Irish_Penny_Journal_(Bookshelf)"); + site2Link.put("Journal of Entomology and Zoology","Journal_of_Entomology_and_Zoology_(Bookshelf)"); + site2Link.put("The Journal of Negro History","The_Journal_of_Negro_History_(Bookshelf)"); + site2Link.put("The Knickerbocker","The_Knickerbocker_(Bookshelf)"); + site2Link.put("L'Illustration","L%27Illustration_(Bookshelf)"); + site2Link.put("Lippincott's Magazine","Lippincott%27s_Magazine_(Bookshelf)"); + site2Link.put("Little Folks","Little_Folks_(Bookshelf)"); + site2Link.put("London Medical Gazette","London_Medical_Gazette"); + site2Link.put("The Mayflower","The_Mayflower_(Bookshelf)"); + site2Link.put("McClure's Magazine","McClure%27s_Magazine_(Bookshelf)"); + site2Link.put("The Menorah Journal","The_Menorah_Journal_(Bookshelf)"); + site2Link.put("The Mentor","The_Mentor_(Bookshelf)"); + site2Link.put("The Mirror of Literature, Amusement, and Instruction","The_Mirror_of_Literature,_Amusement,_and_Instruction_(Bookshelf)"); + site2Link.put("The Mirror of Taste, and Dramatic Censor","The_Mirror_of_Taste,_and_Dramatic_Censor_(Bookshelf)"); + site2Link.put("Mother Earth","Mother_Earth_(Bookshelf)"); + site2Link.put("Mrs Whittelsey's Magazine for Mothers and Daughters","Mrs_Whittelsey%27s_Magazine_for_Mothers_and_Daughters_(Bookshelf)"); + site2Link.put("The National Preacher","The_National_Preacher_(Bookshelf)"); + site2Link.put("The North American Medical and Surgical Journal","The_North_American_Medical_and_Surgical_Journal_(Bookshelf)"); + site2Link.put("Northern Nut Growers Association","Northern_Nut_Growers_Association_(Bookshelf)"); + site2Link.put("Notes and Queries","Notes_and_Queries_(Bookshelf)"); + site2Link.put("Our Young Folks","Our_Young_Folks_(Bookshelf)"); + site2Link.put("Poetry, A Magazine of Verse","Poetry,_A_Magazine_of_Verse_(Bookshelf)"); + site2Link.put("Popular Science Monthly","Popular_Science_Monthly_(Bookshelf)"); + site2Link.put("Prairie Farmer","Prairie_Farmer_(Bookshelf)"); + site2Link.put("Punch","Punch_(Bookshelf)"); + site2Link.put("Punchinello","Punchinello_(Bookshelf)"); + site2Link.put("Scientific American","Scientific_American_(Bookshelf)"); + site2Link.put("The Scrap Book","The_Scrap_Book_(Bookshelf)"); + site2Link.put("Scribner's Magazine","Scribner%27s_Magazine_(Bookshelf)"); + site2Link.put("The Speaker","The_Speaker_(Bookshelf)"); + site2Link.put("The Stars and Stripes","The_Stars_and_Stripes_(Bookshelf)"); + site2Link.put("The Strand Magazine","The_Strand_Magazine_(Bookshelf)"); + site2Link.put("The Haslemere Museum Gazette","The_Haslemere_Museum_Gazette_(Bookshelf)"); + site2Link.put("The Unpopular Review","The_Unpopular_Review_(Bookshelf)"); + site2Link.put("The Writer","The_Writer_(Bookshelf)"); + site2Link.put("The Yellow Book","The_Yellow_Book_(Bookshelf)"); + + + } +} diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg/src/edu/usc/cssl/tacit/crawlers/gutenberg/services/GutenbergMain.java b/edu.usc.cssl.tacit.crawlers.gutenberg/src/edu/usc/cssl/tacit/crawlers/gutenberg/services/GutenbergMain.java new file mode 100644 index 00000000..0f6e033b --- /dev/null +++ b/edu.usc.cssl.tacit.crawlers.gutenberg/src/edu/usc/cssl/tacit/crawlers/gutenberg/services/GutenbergMain.java @@ -0,0 +1,165 @@ +package edu.usc.cssl.tacit.crawlers.gutenberg.services; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.jsoup.HttpStatusException; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import com.fasterxml.jackson.core.JsonEncoding; +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonGenerator; + +import edu.usc.cssl.tacit.common.ui.views.ConsoleView; + +//import edu.usc.cssl.tacit.crawlers.frontier.services.FrontierConstants; + + +public class GutenbergMain { + JsonFactory jsonFactory; + JsonGenerator jsonGenerator; + IProgressMonitor monitor; + + public void crawl(String dir, String domain, int limit,IProgressMonitor monitor) throws IOException{ + ConsoleView.printlInConsoleln("For Sub Domain: " + domain); + //System.out.println("I am in crawl"); + this.monitor = monitor; + //System.out.println("dir------" + dir); + //System.out.println("domain---" + domain); + //System.out.println("limit-----" + limit); + ArrayList temp = new ArrayList(); + int downloadCount = 0; + jsonFactory = new JsonFactory(); + //this.monitor = monitor; + File streamFile = new File(dir+File.separator+domain+".json"); + int count =0; + int downloadedCount =0; + File f=null; + System.out.println("I am in while---and count is ----" + count); + try { + jsonGenerator = jsonFactory.createGenerator(streamFile, JsonEncoding.UTF8); + jsonGenerator.useDefaultPrettyPrinter(); + jsonGenerator.writeStartArray(); + + f = new File(dir+File.separator+domain+".txt"); + //System.out.println("File Name--------" + dir+File.separator+domain+".txt"); + //String domain1= domain.replaceAll("\\s+", "_"); + //String domain2 = domain1.replace("'", "%27"); + String domain2 = GutenbergConstants.site2Link.get(domain); + //String site = IGutenbergConstants.BASE_URL_DOMAIN + domain2 + "_(Bookshelf)"; + String site = IGutenbergConstants.BASE_URL_DOMAIN + domain2; + //System.out.println("domain2-----" + domain2); + System.out.println("site---------" + site); + Document d = Jsoup.connect(site).timeout(60*1000).get(); + Elements certainlinks = d.select("a[href*=www.gutenberg.org/ebooks/]"); + for (Element table : certainlinks){ + Element a = table.select("a").first(); + String linkStr = a.attr("href"); + //System.out.println(linkStr); + int lastIndex = linkStr.lastIndexOf('/'); + String s2 = linkStr.substring(lastIndex+1); + if (s2.matches("[-+]?\\d*\\.?\\d+")) + { + temp.add(s2); + } + //System.out.println(s2); + + } + if(limit>temp.size()) + { + limit = temp.size(); + } + //System.out.println("******************************************************"); + //System.out.println(temp); + //System.out.println("******************************************************"); + jsonGenerator.writeStartObject(); + //System.out.println("Size of temp-------" + temp.size()); + int tempSize = temp.size(); + monitor.worked(1); + + + } catch (IOException e2) { + e2.printStackTrace(); + } + + while(true){ + if(limit==downloadedCount) + break; + try{ + //System.out.println("I am in while-------------||||||||||||||||||||||||||------------------------"); + + for (int i = downloadCount;downloadedCount temp = new ArrayList(); + int downloadCount = 0; + int downloadedCount =0; + this.monitor =monitor; + jsonFactory = new JsonFactory(); + File streamFile = new File(dir+File.separator+ "Latest Search"+".json"); + try { + jsonGenerator = jsonFactory.createGenerator(streamFile, JsonEncoding.UTF8); + jsonGenerator.useDefaultPrettyPrinter(); + jsonGenerator.writeStartArray(); + } catch (IOException e2) { + e2.printStackTrace(); + } + File f=null; + try + { + f = new File(dir+File.separator+ "Latest Search" +".txt"); + monitor.worked(1); + String site = IGutenbergConstants.LATEST_SERACH; + System.out.println("site-----" + site); + Document d = Jsoup.connect(site).timeout(60*1000).get(); + Elements certainlinks = d.select("a[href*=/ebooks/]"); + //System.out.println(certainlinks); + for (Element table : certainlinks){ + Element a = table.select("a").first(); + String linkStr = a.attr("href"); + //System.out.println(linkStr); + int lastIndex = linkStr.lastIndexOf('/'); + String s2 = linkStr.substring(lastIndex+1); + if (s2.matches("[-+]?\\d*\\.?\\d+")) + { + temp.add(s2); + } + } + if(limit>temp.size()) + { + limit = temp.size(); + } + //System.out.println("temp ka size=======" + temp.size()); + //System.out.println("Limit given========" + limit); + //System.out.println(temp); + } + catch(HttpStatusException e1){ + if(e1.getStatusCode() == 412 || e1.getStatusCode() == 404) + { + System.out.println("Error Status Code is ----" + e1.getStatusCode()); + } + } + + while(true){ + if(limit==downloadedCount) + break; + //System.out.println("******************I am in if***************************"); + for(int i = downloadCount;downloadedCount" + numOfebook); + String titleSite = IGutenbergConstants.TITLE_BASE_URL + numOfebook + "/" + numOfebook + "-h/" + numOfebook + "-h.htm"; + //System.out.println(titleSite); + Document e = Jsoup.connect(titleSite).timeout(60*1000).get(); + Element title = e.select("title").first(); + //System.out.println(title); + String contentSite = IGutenbergConstants.CONTENT_BASE_URL + numOfebook + "/pg" + numOfebook + ".txt"; + System.out.println("=============>>>>>>" + contentSite); + Document g = Jsoup.connect(contentSite).timeout(60*1000).get(); + Response response = Jsoup.connect(contentSite).execute(); + ConsoleView.printlInConsoleln("Writing topic: "+ Jsoup.parse(title.toString()).text()); + jsonGenerator.writeStartObject(); + jsonGenerator.writeObjectField("title", Jsoup.parse(title.toString()).text()); + jsonGenerator.writeObjectField("abstract_body", Jsoup.parse(g.toString()).text()); + jsonGenerator.writeEndObject(); + downloadCount++; + downloadedCount++; + if(i==temp.size()-1 && downloadedCount!=limit) + { + //System.out.println("*************************************************"); + temp = searchNextPage(temp,limit); + } + //System.out.println("Download Count is=" + downloadCount); + //System.out.println("Downloaded Count is=" + downloadedCount); + } + catch(HttpStatusException e1){ + if(e1.getStatusCode() == 412 || e1.getStatusCode() == 404) + { + System.out.println("Error Status Code is ----" + e1.getStatusCode()); + //System.out.println("Continuing after error"); + downloadCount++; + //System.out.println("Download Count in Catch=" + downloadCount); + //System.out.println("Downloaded Count in Catch=" + downloadedCount); + //System.out.println("Last Book in Catch=" + lastbook); + if(i==temp.size()-1 && downloadedCount!=limit) + { + //System.out.println("Searching nextttttttttttt paggeeeeeeeeeee"); + temp = searchNextPage(temp,limit); + } + + continue; + } + } + + } + jsonGenerator.writeEndArray(); + } + + //System.out.println("*****************I am out of if******************"); + //System.out.println("I am out of extreme"); + // System.out.println(temp); + //System.out.println("temp ka size=======" + temp.size()); + try { + jsonGenerator.close(); + } catch (IOException e) { + e.printStackTrace(); + } + System.out.println("Number of Downloads--" + downloadedCount); + +} + + private ArrayList searchNextPage(ArrayList temp, int limit) throws IOException { + //System.out.println("&&&&&&&&&&&&&&&&&|||||||||||||||||||||||||||||I am indise while||||||||||||||||||||||||||||||||&&&&&&&&&&&&&&&&&"); + int diff = limit-temp.size(); + //System.out.println("Difference is----" + diff); + //System.out.println("nextpage index is---" + nextpageindex); + String site2 = IGutenbergConstants.POPULAR_SEARCH + "&start_index=" + nextpageindex; + //System.out.println("site2********************" + site2); + Document h = Jsoup.connect(site2).timeout(60*1000).get(); + Elements certainlinks1 = h.select("a[href*=/ebooks/]"); + for (Element table : certainlinks1){ + Element a = table.select("a").first(); + String linkStr = a.attr("href"); + //System.out.println(linkStr); + int lastIndex = linkStr.lastIndexOf('/'); + String s2 = linkStr.substring(lastIndex+1); + if (s2.matches("[-+]?\\d*\\.?\\d+")) + { + temp.add(s2); + } + } + nextpageindex = nextpageindex + 25; + lastbook = lastbook + 25; + //System.out.println("Last Book in method=" + lastbook); + //System.out.println(temp); + //System.out.println("Size of temp----" + temp.size()); + // TODO Auto-generated method stub + return temp; + } +} diff --git a/edu.usc.cssl.tacit.crawlers.gutenberg/src/edu/usc/cssl/tacit/crawlers/gutenberg/services/SearchPopular.java b/edu.usc.cssl.tacit.crawlers.gutenberg/src/edu/usc/cssl/tacit/crawlers/gutenberg/services/SearchPopular.java new file mode 100644 index 00000000..5c17db6b --- /dev/null +++ b/edu.usc.cssl.tacit.crawlers.gutenberg/src/edu/usc/cssl/tacit/crawlers/gutenberg/services/SearchPopular.java @@ -0,0 +1,226 @@ +package edu.usc.cssl.tacit.crawlers.gutenberg.services; + + + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; + +//import org.eclipse.core.runtime.IProgressMonitor; +//import org.jsoup.HttpStatusException; +import org.jsoup.Jsoup; +import org.jsoup.Connection.Response; +import org.eclipse.core.runtime.IProgressMonitor; +import org.jsoup.HttpStatusException; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import com.fasterxml.jackson.core.JsonEncoding; +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonGenerator; + +import edu.usc.cssl.tacit.common.ui.views.ConsoleView; + + +public class SearchPopular { + JsonFactory jsonFactory; + JsonGenerator jsonGenerator; + //IProgressMonitor monitor; + public int nextpageindex=26; + ArrayList temp = new ArrayList(); + ArrayList checktemp = new ArrayList(); + IProgressMonitor monitor; + + + //popular method will go the site and get the books in arraylist called temp + public void popular(String dir, int limit,String query,IProgressMonitor monitor) throws IOException { + int downloadCount = 0; + int downloadedCount =0; + this.monitor = monitor; + jsonFactory = new JsonFactory(); + File streamFile = new File(dir+File.separator+ query +".json"); + try { + jsonGenerator = jsonFactory.createGenerator(streamFile, JsonEncoding.UTF8); + jsonGenerator.useDefaultPrettyPrinter(); + jsonGenerator.writeStartArray(); + } catch (IOException e2) { + e2.printStackTrace(); + } + File f=null; + try + { + f = new File(dir+File.separator+ query +".txt"); + monitor.worked(1); + String site = IGutenbergConstants.POPULAR_SEARCH+query; + System.out.println("site-----" + site); + Document d = Jsoup.connect(site).timeout(60*1000).get(); + Elements certainlinks = d.select("a[href*=/ebooks/]"); + //System.out.println(certainlinks); + for (Element table : certainlinks){ + Element a = table.select("a").first(); + String linkStr = a.attr("href"); + //System.out.println(linkStr); + int lastIndex = linkStr.lastIndexOf('/'); + String s2 = linkStr.substring(lastIndex+1); + if (s2.matches("[-+]?\\d*\\.?\\d+")) + { + temp.add(s2); + } + } + //System.out.println("temp ka size=======" + temp.size()); + //System.out.println("Limit given========" + limit); + //System.out.println(temp); + monitor.worked(1); + if(temp.size()==0) + { + //when search result returns nothing. i.e no books according to user search + ConsoleView.printlInConsoleln("No books found according to your search.Kindly change your search options or try again later."); + } + if((limit==temp.size() || limit < temp.size() || limit>temp.size()) && temp.size()!=0) + { + //Two of the three cases i told you + lessThanOrEqualTo(limit,query,temp); + } + } + catch(HttpStatusException e1){ + if(e1.getStatusCode() == 412 || e1.getStatusCode() == 404) + { + System.out.println("Error Status Code is ----" + e1.getStatusCode()); + } + } + + try { + jsonGenerator.close(); + } catch (IOException e) { + e.printStackTrace(); + } + //System.out.println("Number of Downloads-|||||||||||||||||||||||||||||||||||" + downloadCount); + + } + + + /*Cases : + * Case 0 : limit 5, temp 25, can get more in temp, 0 fails of first 25. + * Case 1: limit 5, temp 25, can get more in temp, 22 fails of first 25 + * Case 2: limit 27, temp 25, can get more in temp, 10 fails of first 25 + * Case 3: limit 10, temp 25, can't get more in temp, 20 fails of first 25. + * Case 4: limit 20, temp 15, can't get more in temp, 0 fails of first 25. + * + */ + //lessthanOrEqualTo method will now extract title and content from the books in temp + private void lessThanOrEqualTo(int limit, String query, ArrayList temp) throws IOException { + int downloadedCount =0; + //int downloadCount =0; + while(true){ + if(downloadedCount==limit) + { + break; + } + for(int i = 0;i" + numOfebook); + String titleSite = IGutenbergConstants.TITLE_BASE_URL + numOfebook + "/" + numOfebook + "-h/" + numOfebook + "-h.htm"; + //System.out.println(titleSite); + Document e = Jsoup.connect(titleSite).timeout(60*1000).get(); + Element title = e.select("title").first(); + //System.out.println(title); + String contentSite = IGutenbergConstants.CONTENT_BASE_URL + numOfebook + "/pg" + numOfebook + ".txt"; + //System.out.println("=============>>>>>>" + contentSite); + Document g = Jsoup.connect(contentSite).timeout(60*1000).get(); + Response response = Jsoup.connect(contentSite).execute(); + ConsoleView.printlInConsoleln("Writing topic: "+ Jsoup.parse(title.toString()).text()); + jsonGenerator.writeStartObject(); + jsonGenerator.writeObjectField("title", Jsoup.parse(title.toString()).text()); + jsonGenerator.writeObjectField("abstract_body", Jsoup.parse(g.toString()).text()); + jsonGenerator.writeEndObject(); + //downloadCount++; + downloadedCount++; + //System.out.println("Download Count is=" + downloadCount); + //System.out.println("Downloaded Count is=" + downloadedCount); + } + catch(HttpStatusException e1){ + if(e1.getStatusCode() == 412 || e1.getStatusCode() == 404) + { + System.out.println("Error Status Code is ----" + e1.getStatusCode()); + //System.out.println("Continuing after error"); + //downloadCount++; + //System.out.println("Download Count in Catch=" + downloadCount); + //System.out.println("Downloaded Count in Catch=" + downloadedCount); + continue; + } + } + } + if(downloadedCount!=limit) + { + //This is a check when end of temp is reached and also downloadedCount is not equal to limit so we need to search next page + //System.out.println("I should search next page now probably"); + //downloadCount++; + checktemp = searchnextpage(query,limit); //searchnextpage will search the nextpage of site and return next ebooks that will be stored in checktemp + if(checktemp.isEmpty()) + { + //means next page is empty + //System.out.println("Next temp not found"); + break; + } + else + { + temp.clear(); + temp.addAll(checktemp); + } + } + + } + jsonGenerator.writeEndArray(); + if(downloadedCount==0) + { + ConsoleView.printlInConsoleln("No books found according to your search.Kindly change your search options or try again later."); + } + ConsoleView.printlInConsoleln(downloadedCount + " book(s) downloaded according to specified search result."); + } + + + + private ArrayList searchnextpage(String query, int limit) throws IOException { + System.out.println("&&&&&&&&&&&&&&&&&I am indise SEARCHNEXT&&&&&&&&&&&&&&&&&"); + ArrayList newtemp = new ArrayList(); + int diff = limit-temp.size(); + System.out.println("Difference is----" + diff); + System.out.println("nextpage index is---" + nextpageindex); + String site2 = IGutenbergConstants.POPULAR_SEARCH + query + "&start_index=" + nextpageindex; + System.out.println("site2********************" + site2); + Document h = Jsoup.connect(site2).timeout(60*1000).get(); + Elements certainlinks1 = h.select("a[href*=/ebooks/]"); + for (Element table : certainlinks1){ + Element a = table.select("a").first(); + String linkStr = a.attr("href"); + //System.out.println(linkStr); + int lastIndex = linkStr.lastIndexOf('/'); + String s2 = linkStr.substring(lastIndex+1); + if (s2.matches("[-+]?\\d*\\.?\\d+")) + { + newtemp.add(s2); + } + } + nextpageindex = nextpageindex + 25; + //System.out.println("Lets check new temp"); + //System.out.println("############################################"); + //System.out.println(newtemp); + //System.out.println("############################################"); + return newtemp; + + } + + + + +} + diff --git a/edu.usc.cssl.tacit.feature/feature.xml b/edu.usc.cssl.tacit.feature/feature.xml index 20a09390..3db8a305 100644 --- a/edu.usc.cssl.tacit.feature/feature.xml +++ b/edu.usc.cssl.tacit.feature/feature.xml @@ -542,5 +542,20 @@ version="0.0.0" unpack="false"/> + + + + + diff --git a/edu.usc.cssl.tacit.repository/plugin.xml b/edu.usc.cssl.tacit.repository/plugin.xml index 4e3c64f7..18f6f5e6 100644 --- a/edu.usc.cssl.tacit.repository/plugin.xml +++ b/edu.usc.cssl.tacit.repository/plugin.xml @@ -290,6 +290,15 @@ relative="org.eclipse.ui.editorss" visible="false"> + + + + diff --git a/parent/pom.xml b/parent/pom.xml index 3326afc0..bcc85831 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -54,6 +54,9 @@ ../edu.usc.cssl.tacit.crawlers.govtrack.ui ../edu.usc.cssl.tacit.crawlers.govtrack + + ../edu.usc.cssl.tacit.crawlers.gutenberg.ui + ../edu.usc.cssl.tacit.crawlers.gutenberg