import jp.dbcls.togows.soap.*;

public class PdbjGashAsyncResult {

    public static void main(String[] args) {
        try {
            String qpdbId = "1pg0";
            String qchainId = "";
            String tpdbId = "2sfa";
            String tchainId = "";

            TogowsPdbjService service = new TogowsPdbjServiceLocator();
            TogowsPdbjPort stub = service.getTogowsPdbjPort();

            GashRequest gashInput = new GashRequest();
            gashInput.setQpdbId(qpdbId);
            gashInput.setQchainId(qchainId);
            gashInput.setTpdbId(tpdbId);
            gashInput.setTchainId(tchainId);

            String jobid = stub.pdbjGashAsync(gashInput);
            System.out.println(jobid);

            String status = null;
            do {
                try {
                    Thread.sleep(10000);
                } catch (Exception e) {
                }
                status = stub.checkAsyncStatus(jobid);
                System.out.println(status);
            } while (status.equals("RUNNING"));

            GashResult result = stub.pdbjGashAsyncResult(jobid);

            System.out.println("status=" + result.getStatus());
            System.out.println("message=" + result.getMessage());

            if (result.getStatus().equals("Success")) {
                Superposition[] sups = result.getSuperpositions();
                for (int i = 0; i < sups.length; i++) {
                    System.out.println("ID = " + sups[i].getSuperpositionId());
                    System.out.println("QUERY       " + sups[i].getQuerySeq());
                    System.out.println("QUERY       " + sups[i].getQuerySst());
                    System.out.println("TEMPL       " + sups[i].getTemplateSeq());
                    System.out.println("TEMPL       " + sups[i].getTemplateSst());
                    System.out.println("Equivalence " + sups[i].getEquivalence());
                    System.out.println("Min RMSD = "  + sups[i].getMinCaRmsd());
                    System.out.println("NER Score = " + sups[i].getNerScore());
                    System.out.println("RCUT = "      + sups[i].getRcut());
                    System.out.println("Query-Template RMSD = " + sups[i].getQueryTemplRmsd());
                    System.out.println("Alignment Length = " + sups[i].getQueryTemplNAlign());
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
