1 package search.hitdisplay;
2 
3 import java.util.Arrays;
4 
5 import resource.ResourceLocator;
6 import util.ConnectionUtil;
7 import util.DisplayUtil;
8 import util.MolImportUtil;
9 import util.SearchUtil;
10import util.TableOperations;
11import chemaxon.jchem.db.JChemSearch;
12import chemaxon.sss.SearchConstants;
13import chemaxon.sss.search.JChemSearchOptions;
14import chemaxon.struc.Molecule;
15import chemaxon.util.ConnectionHandler;
16import chemaxon.util.HitColoringAndAlignmentOptions;
17
18/**
19 * This example demonstrates how to retrieve search results rotated according to the query.
20 * 
21 * @author JChem Base team, ChemAxon Ltd.
22 */
23public final class RotateDatabaseHitsExample {
24
25    private static final String TABLE_NAME = "demo";
26
27    private ConnectionHandler connHandler;
28
29    public static void main(String[] args) {
30        try {
31            new RotateDatabaseHitsExample().run();
32        } catch (Exception e) {
33            e.printStackTrace();
34        }
35    }
36
37    private void run() throws Exception {
38        connHandler = ConnectionUtil.connectToDB();
39        try {
40            TableOperations.setupMoleculeTable(connHandler, TABLE_NAME);
41            runExample();
42        } finally {
43            ConnectionUtil.closeConnection(connHandler);
44        }
45
46    }
47
48    private void runExample() throws Exception {
49        Molecule[] hits = null;
50
51        JChemSearchOptions searchOpts =
52                new JChemSearchOptions(SearchConstants.DEFAULT_SEARCHTYPE);
53        JChemSearch jcs =
54                SearchUtil.createJChemSearch(connHandler, "OC(CCC)=O", TABLE_NAME, searchOpts);
55
56        String path = ResourceLocator.getPath("rotateQuery.mrv");
57        Molecule query = MolImportUtil.importMol(path);
58        jcs.setQueryStructure(query);
59
60        jcs.run();
61
62        HitColoringAndAlignmentOptions displayOpts = DisplayUtil.createColoringOptions();
63        displayOpts.setAlignmentMode(HitColoringAndAlignmentOptions.ALIGNMENT_ROTATE);
64
65        // HitDisplayTool is integrated in JChemSearch
66        int[] results = jcs.getResults();
67        System.out.println("Hits: " + Arrays.toString(results));
68        hits = jcs.getHitsAsMolecules(results, displayOpts, null, null);
69
70        // Show query
71        DisplayUtil.showMolecule(query, 0, 200, "Query");
72
73        // Showing first 8 hits
74        for (int i = 0; i < 8; i++) {
75            DisplayUtil.showMolecule(hits[i], i + 4, 200, "Hit " + (i + 1));
76        }
77    }
78
79}
80