0

i have got a java code for a oAuth login in the Indivo server. It is working good when I'm running it from the terminal. Now, I would like to convert it to an Android app, doing pretty much the same thing. What are the necessary changes that I need to incorporate, in order to convert this raw java code into a running Android application?

When I copy the same code, and import the necessary packages, it gives an error in the class definition, and in the main declaration. it says "the main method cannot be declared static".

Here is the java code:

public class ChromeTest {

                private Map<String, Object> options = null;
                private String recordId = null;
                private String recordId_second = null;
                private String appId = "chrome@apps.indivo.org";
                private String problemApp = "problems@apps.indivo.org";
                private Properties properties = null;
                private String sessionToken = null;
                private String sessionTokenSecret = null;
                private String sessionToken_second = null;
                private String sessionTokenSecret_second = null;
                private String pagingOrderingQuery = null;
                private String extrnlRandom = null;

                private XPath xpath = null;

                private DatatypeFactory dtf = null;
                private XMLGregorianCalendar gregCal = null;

                private String demographicsDoc =
            "<Demographics xmlns=\"Demographics\">"
            + "<dateOfBirth>2009-11-02T00:40:30+00:00</dateOfBirth>"
            + "</Demographics>";

                private String contactDoc =
            "<Contact  xmlns=\"Contact\">"
            + "<name><fullname>nameForTestDocument</fullname><givenName/><familyName/></name>"
            + "<email type=\"work\">nathan.finstein@childrens.harvard.edu</email>"
            + "<address type=\"home\"><streetAddress>1 one way</streetAddress>"
            + "<postalCode>12345</postalCode>"
            + "<locality>ames</locality>"
            + "<region>Colorado</region>"
            + "<country>USA</country></address>"
            + "<location type=\"home\"><latitude>90</latitude><longitude>90</longitude></location>"
            + "</Contact>";

                String testDocExtrnl = "<Testing123>strictly for testing - external from chrome</Testing123>";
                String testDocStatus = "<Testing123>strictly for testing Status from chrome</Testing123>";
                String testDocRelate_A = "<Testing123>strictly for testing Relate from chrome A</Testing123>";
                String testDocRelate_B = "<Testing123>strictly for testing Relate from chrome B</Testing123>";
                String testDocAppSpecific = "<Testing123>strictly for testing - app specific from chrome</Testing123>";
                String testDocAppSpecificR = "<Testing123>strictly for testing - app specific record specific from chrome</Testing123>";
                String testDoc = "<Testing123>strictly for testing - chrome created no externalID</Testing123>";
                //String testDocRplc = "<Testing123>strictly for testing - replaced by Chrome</Testing123>";
                String testDocEstablished = "<Testing123>strictly for testing - Have Chrome try to delete later</Testing123>";
                String testDocToDelete = "<Testing123>strictly for testing - Chrome should be able to delete this if done soon</Testing123>";
                String testDocToReplace = "<Testing123>strictly for testing - Chrome will replace this version</Testing123>";
                String testDocReplacement = "<Testing123>strictly for testing - Chrome will use this to replace the other</Testing123>";
                String testDocToShare = "<Testing123>share this</Testing123>";

                String allergyDoc =
            "<Allergy xmlns=\"http://indivo.org/vocab/xml/documents#\">\n" +
            "  <dateDiagnosed>2009-05-16</dateDiagnosed>\n" +
            "  <diagnosedBy>Children's Hospital Boston</diagnosedBy>\n" +
            "  <allergen>\n" +
            "    <type type=\"http://codes.indivo.org/codes/allergentypes/\" value=\"drugs\">Drugs</type>\n" +
            "    <name type=\"http://codes.indivo.org/codes/allergens/\" value=\"penicillin\">Penicillin</name>\n" +
            "  </allergen>\n\n" +
            "  <reaction>blue rash</reaction>\n" +
            "  <specifics>this only happens on weekends</specifics>\n" +
            "</Allergy>";


                String medicationDoc =
            "<Medication xmlns=\"http://indivo.org/vocab/xml/documents#\">" +
              "<dateStarted>2009-02-05</dateStarted>" +
              "<name type=\"http://indivo.org/codes/meds#\" abbrev=\"c2i\" value=\"cox2-inhibitor\">COX2 Inhibitor</name>" +
              "<brandName type=\"http://indivo.org/codes/meds#\" abbrev=\"vioxx\" value=\"Vioxx\">Vioxx</brandName>" +
              "<dose><value>3</value><unit type=\"http://indivo.org/codes/units#\" value=\"pills\" abbrev=\"p\">pills</unit></dose>" +
              "<route type=\"http://indivo.org/codes/routes#\" value=\"PO\">By Mouth</route>" +
              "<strength><value>100</value><unit type=\"http://indivo.org/codes/units#\" value=\"mg\" abbrev=\"mg\">milligram</unit></strength>" +
              "<frequency type=\"http://indivo.org/codes/frequency#\" value=\"daily\">daily</frequency>" +
              "</Medication>";


                /**
                 * @param args the command line arguments
                 */
                public static void main(String[] args) throws
                IndivoClientException, IOException, XPathExpressionException, javax.xml.datatype.DatatypeConfigurationException{
                    // TODO code application logic here
                    ChromeTest instance = new ChromeTest();

                    Properties props = new Properties();
                    instance.properties = props;

                    instance.xpath = XPathFactory.newInstance().newXPath();
                    instance.extrnlRandom = Integer.toString(new Random().nextInt(1000000));

                    instance.dtf = DatatypeFactory.newInstance();

                    instance.doTest();
                }


                private void reportKnownError(Exception ice) {
                    String errId = Integer.toString(new Random().nextInt(1000000));
                    System.err.println("\n\nerror id: " + errId);

                    ice.printStackTrace();
                    System.err.println("==============================================\n");
                    System.out.println("Known exception thrown, stack trace in error stream, see: " + errId + "\n");

                }

                private void doTest() throws IndivoClientException, XPathExpressionException, UnsupportedEncodingException {
                    Rest chrome = new Rest("chrome", "chrome", "http://localhost:8080", null);
                    String accountId = "johnsmith@example.org";
                    String username = "jsmith";
                    String password = "password.example";


                    String accountId_second = "johnsmith@example.org";
                    String username_second = "jsmith";
                    String password_second = "password.example";

                    recordId = "781a64e7-fc04-4bbc-8804-7480b0b337dc";
                    recordId_second = "781a64e7-fc04-4bbc-8804-7480b0b337dc";


                    String str = "username="+ username+ "&password="+password ;
                    System.out.println("testing -- oauth_internal_session_createPOST");
                    Map<String,String> testResultForm  =(Map<String,String>) chrome.oauth_internal_session_createPOST(str, options);
                    System.out.println("oauth_internal_session_createPOST  once");
                    System.out.println(Utils.printForm(testResultForm) + "\n\n");
                    sessionToken = testResultForm.get("oauth_token");
                    sessionTokenSecret = testResultForm.get("oauth_token_secret");
                    String str1 = "username="+ username_second+ "&password="+password_second ;

                    testResultForm  =(Map<String,String>)chrome.oauth_internal_session_createPOST(str1, options);

                    System.out.println(Utils.printForm(testResultForm) + "\n\n");
                    sessionToken_second = testResultForm.get("oauth_token");
                    sessionTokenSecret_second = testResultForm.get("oauth_token_secret");

                    Document testResultDoc = null;
                    System.out.println("testing -- records_X_documents_X_versions_GET");

                    System.out.println("testing -- records_X_documents_GET");
                    String xmlDateTime = null;
                    gregCal = dtf.newXMLGregorianCalendar(new GregorianCalendar());
                    xmlDateTime = gregCal.toXMLFormat();

                    String hba1cDoc = "<HBA1C xmlns=\"http://indivo.org/vocab#\" value=\"6.3\""
                        + " unit=\"mg/dL\" datetime=\"" + xmlDateTime + "\" />"; 
                    System.out.println("testing -- records_X_documents_POST");
                    testResultDoc = (Document) chrome.records_X_documents_POST(
                            recordId, sessionToken, sessionTokenSecret, hba1cDoc, "application/xml", options);
                    System.out.println(Utils.domToString(testResultDoc) + "\n\n");
                    System.out.println("\n--------------------------------------\n\n");
                    System.out.println("testing -- records_X_documents_POST");
                    testResultDoc = (Document) chrome.records_X_documents_POST(
                            recordId, sessionToken, sessionTokenSecret,
                            hba1cDoc.replace("\"6.3\"", "\"7.4\""), "application/xml", options);
                    System.out.println(Utils.domToString(testResultDoc) + "\n\n");
                    System.out.println("\n--------------------------------------\n\n");


                    testResultDoc = (Document) chrome.records_X_documents_POST(recordId, sessionToken, sessionTokenSecret,
                            medicationDoc,  "application/xml", options);

                    System.out.println("testing -- records_X_reports_minimal_X_GET");
                    testResultDoc = (Document) chrome.records_X_reports_minimal_X_GET(
                            pagingOrderingQuery, recordId, "medications", sessionToken, sessionTokenSecret, options);
                    System.out.println(Utils.domToString(testResultDoc) + "\n\n");
                    System.out.println("\n==================================================\n\n");

                    System.out.println("testing -- accounts_XGET");
                    testResultDoc = (Document) chrome.accounts_XGET(accountId, sessionToken, sessionTokenSecret, options);
                    System.out.println(Utils.domToString(testResultDoc) + "\n\n");
                    System.out.println("\n==================================================\n\n");


                    System.out.println("testing -- accounts_X_infoSetPOST");
                    testResultDoc = (Document) chrome.accounts_X_infoSetPOST(
                            "new full_name nathan.finstein@childrens.harvard.edu", accountId, sessionToken, sessionTokenSecret, options);
                    System.out.println(Utils.domToString(testResultDoc) + "\n\n");
                    System.out.println("\n==================================================\n\n");

                    System.out.println("testing -- accounts_X_authsystems_password_setUsernamePOST");
                    testResultDoc = (Document) chrome.accounts_X_authsystems_password_setUsernamePOST(username + "_new", accountId, sessionToken, sessionTokenSecret, options);
                    System.out.println(Utils.domToString(testResultDoc) + "\n\n");
                    System.out.println("\n------------------------------------------------\n\n");

                    // now set it back right away so we don't break anything
                    System.out.println("testing -- accounts_X_authsystems_password_setUsernamePOST");
                    testResultDoc = (Document) chrome.accounts_X_authsystems_password_setUsernamePOST(username, accountId, sessionToken, sessionTokenSecret, options);
                    System.out.println(Utils.domToString(testResultDoc) + "\n\n");
                    System.out.println("\n------------------------------------------------\n\n");

                    String str2 = "username="+ username+ "&password="+password ;
                    testResultForm  =(Map<String,String>)chrome.oauth_internal_session_createPOST(str2, options);
                    System.out.println("oauth_internal_session_createPOST  twice");
                    System.out.println(Utils.printForm(testResultForm) + "\n\n");
                    sessionToken = testResultForm.get("oauth_token");
                    sessionTokenSecret = testResultForm.get("oauth_token_secret");
                    System.out.println("\n==================================================\n\n");

                    System.out.println("testing -- accounts_X_authsystems_password_changePOST");
                    testResultDoc = (Document) chrome.accounts_X_authsystems_password_changePOST(password, 
                            password + "_new", accountId, sessionToken, options);
                    System.out.println(Utils.domToString(testResultDoc) + "\n\n");
                    System.out.println("\n--------------------------------------------------\n\n");

                    // now change it right back
                    System.out.println("testing -- accounts_X_authsystems_password_changePOST");
                    testResultDoc = (Document) chrome.accounts_X_authsystems_password_changePOST(password + "_new", password, accountId, sessionToken, options);
                    System.out.println(Utils.domToString(testResultDoc) + "\n\n");
                    System.out.println("\n==================================================\n\n");


                    // now set it back to what it was
                    System.out.println("testing -- accounts_X_authsystems_password_setUsernamePOST");
                    try {
                    System.out.println("testing -- records_X_apps_XDELETE");
                    testResultDoc = (Document) chrome.records_X_apps_XDELETE(
                            recordId_second, problemApp, sessionToken_second, sessionTokenSecret_second, options);
                    System.out.println(Utils.domToString(testResultDoc) + "\n\n");
                    System.out.println("\n==================================================\n\n");
                    } catch (IndivoClientException ice) {
                        reportKnownError(ice);
                    }


                    if (false) {  // skip for now, test with OAuth dance
                    System.out.println("testing -- oauth_internal_request_tokens_X_claimPOST");
                    testResultDoc = (Document) chrome.oauth_internal_request_tokens_X_claimPOST("requestToken", sessionToken, sessionTokenSecret, options);
                    System.out.println(Utils.domToString(testResultDoc) + "\n\n");
                    System.out.println("\n==================================================\n\n");

                    System.out.println("testing -- oauth_internal_request_tokens_X_infoGET");
                    testResultDoc = (Document) chrome.oauth_internal_request_tokens_X_infoGET("requestToken", sessionToken, sessionTokenSecret, options);
                    System.out.println(Utils.domToString(testResultDoc) + "\n\n");
                    System.out.println("\n==================================================\n\n");

                    System.out.println("testing -- oauth_internal_request_tokens_X_approvePOST");
                    testResultForm = (Map<String,String>) chrome.oauth_internal_request_tokens_X_approvePOST(recordId, "requestToken",
                            sessionToken, sessionTokenSecret, options);
                    System.out.println(Utils.printForm(testResultForm) + "\n\n");
                    System.out.println("\n==================================================\n\n");

                    System.out.println("testing -- oauth_internal_surlVerifyGET");
                    testResultDoc = (Document) chrome.oauth_internal_surlVerifyGET("/widgets/WidgetName?param1=foo&param2=bar&surl_timestamp=<TIMESTAMP>&surl_token=<TOKEN>&surl_sig=<SIGNATURE>", sessionToken, sessionTokenSecret, options);
                    System.out.println(Utils.domToString(testResultDoc) + "\n\n");
                    System.out.println("\n==================================================\n\n");
                    }
                }   

                private List<String> listAllDocs(String recId, Rest chrome)
                        throws IndivoClientException, XPathExpressionException {
                    List<String> retVal = new ArrayList<String>();

                    Document docsDoc = (Document) chrome.records_X_documents_GET(pagingOrderingQuery, recordId, sessionToken, sessionTokenSecret, options);

                    NodeList allDocs = (NodeList) xpath.evaluate("/Documents/Document/@id", docsDoc, XPathConstants.NODESET);
                    System.out.println("allDocs.getLength(): " + allDocs.getLength());

                    for (int ii = 0; ii < allDocs.getLength(); ii++) {
                        String idStr = ((Attr)allDocs.item(ii)).getValue();
                        retVal.add(idStr);
                    }
                    return retVal;
                }

                private void shareAllDocs(String recId, List<String> docsList, String carenetId, Rest chrome)
                        throws IndivoClientException {

                    for (int ii = 0; ii < docsList.size(); ii++) {
                        String idStr = docsList.get(ii);
                        System.out.println("idStr: " + idStr);

                        System.out.println("testing -- records_X_documents_X_carenets_XPUT");
                        Document resltDoc = (Document) chrome.records_X_documents_X_carenets_XPUT(
                                recordId, idStr, carenetId, sessionToken, sessionTokenSecret, options);
                        System.out.println("sharing -- record:" + recordId + " doc:" + idStr + "   " + Utils.domToString(resltDoc) + "\n\n");
                    }



                    System.out.println("\n+===================++++++++++++++++++\n\n");
                }
            }


    }
Ritwik Dey
  • 559
  • 1
  • 7
  • 17

2 Answers2

3

Firstly, you need an Android component to launch your class - it can be either Activity, Service or Application.

Secondly, you need to launch a thread with your code, as network calls are not ok to be executed on the UI thread.

Begin with android development here.

Vladimir Ivanov
  • 42,730
  • 18
  • 77
  • 103
  • about the first part of your answer, in the MainActivity.java file, in my android project, if i create an activity and then copy the same code there, is that going to be any good?? – Ritwik Dey Jan 17 '13 at 07:19
  • for instance: public class MainActivity extends Activity { Button start; Protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); start = (Button) findViewById(R.id.login); start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ------------ ------------ ------------ } } – Ritwik Dey Jan 17 '13 at 07:21
  • well, what i did was, i wrote the java code in a seperate java file, under the src folder. and then, in the MainActivity.java file, i added this code under OnClickListener: ChromeTest ct = new ChromeTest(); //ChromeTest is the class name String args[] = {""}; ct.main(args); But this, upon compilation, gives "Conversion to Dalvik format failed with error 1" error. – Ritwik Dey Jan 17 '13 at 09:28
  • You should refer to AsyncTask class, see this question http://stackoverflow.com/questions/4538338/progressdialog-in-asynctask/4538370#4538370 – Vladimir Ivanov Jan 17 '13 at 09:54
  • Hey Vladimir, went through the thread that u said. To be very frank, couldn't figure out most of the code.. I am still an amateur in Android and java. Could you please help me out by actually drafting the required code segments, if i provide you with the java code and the .jar files, if required? Maybe that will help me understand things better. Thanks a lot... – Ritwik Dey Jan 17 '13 at 11:48
  • mention some public contact information in your details, I will write you a message. – Vladimir Ivanov Jan 17 '13 at 13:07
  • my email id is already mentioned in my profile. you can drop me a mail there. Thank you. – Ritwik Dey Jan 17 '13 at 13:26
0

You should create library project for your java code then use into a Android application and read http://developer.android.com/ to work with Android.

Ashish
  • 31
  • 2
  • I had all the necessary jar files, and i have added them in the referenced library, using build path. Is that what you tried to say? – Ritwik Dey Jan 17 '13 at 07:25
  • Android code didn't have the main method because as per architecture Android application has not a single entry point, each Activity can work as entry point. You should create Activity as per Android architecture then use your java code. – Ashish Jan 17 '13 at 07:50
  • I once heard a saying by Einstein, which goes like "If you can't explain it simply, you don't understand it well enough." Instead of quoting things from the android developer site, can u give me a straight solution to the problem, if u have any? And i'm not stupid to look for a main method in the android code. main method existed in java code, as it should. I just wanted to know of a way by which i can get this running in Android.. – Ritwik Dey Jan 17 '13 at 09:40
  • Well you just want a ready-made solution of your problem didn't want to put any effort Best of Luck!! – Ashish Jan 17 '13 at 10:26