import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import io.swagger.client.ApiException; import io.swagger.client.api.OperationsControllerApi; import io.swagger.client.model.GorgiasQuery; import io.swagger.client.model.GorgiasQueryResult; import io.swagger.client.model.QueryResult; import io.swagger.client.api.ExecuteGorgiasQueryControllerApi; public class Test { /* * Suppose you have the following data on Gorgias Cloud: * * - username : some_user - password : some_password - project (folder) : * some_project - gorgias file : some_policy.pl *** * contents of some_policy.pl *** :- dynamic request/2, need/1, manager/1. * rule(r1(Agent, Resource), challenge(Agent, Resource), []):-request(Agent, * Resource). rule(r2(Agent, Resource), refuse(Agent, Resource), * []):-need(Resource), request(Agent, Resource). rule(r3(Agent, Resource), * give(Agent, Resource), []):-request(Agent, Resource), manager(Agent). * complement(give(Agent, Resource), challenge(Agent, Resource)). * complement(challenge(Agent, Resource), give(Agent, Resource)). * complement(refuse(Agent, Resource), challenge(Agent, Resource)). * complement(challenge(Agent, Resource), refuse(Agent, Resource)). * complement(refuse(Agent, Resource), give(Agent, Resource)). * complement(give(Agent, Resource), refuse(Agent, Resource)). end of * some_policy.pl *** * */ public static void main(String[] args) { try { System.out.println("Gorgias Cloud API Test"); //example of using the project management API OperationsControllerApi opApiInstance = new OperationsControllerApi(); opApiInstance.getApiClient().setUsername("some_user"); opApiInstance.getApiClient().setPassword("some_password"); opApiInstance.getApiClient().setBasePath("http://aiasvm1.amcl.tuc.gr:8085"); //get the user's projects and print them on the terminal, some_project must be listed List projects = opApiInstance.getUserProjectsUsingGET(); System.out.println("My projects:"); for (Iterator iterator = projects.iterator(); iterator.hasNext();) { String string = (String) iterator.next(); System.out.println("\t"+string); } //example of using the prolog API ExecuteGorgiasQueryControllerApi apiInstance = new ExecuteGorgiasQueryControllerApi(); apiInstance.getApiClient().setUsername("some_user"); apiInstance.getApiClient().setPassword("some_password"); apiInstance.getApiClient().setBasePath("http://aiasvm1.amcl.tuc.gr:8085"); GorgiasQuery gorgiasQuery = new GorgiasQuery(); // GorgiasQuery | gorgiasQuery //example of using the prolog API to consult your file ArrayList gorgiasFiles=new ArrayList(); gorgiasFiles.add("someProject/somePolicy.pl"); gorgiasQuery.setGorgiasFiles(gorgiasFiles); //example of using the prolog API to assert a fact ArrayList facts=new ArrayList(); facts.add("request(some_agent,some_tool)"); gorgiasQuery.setFacts(facts); //example of using the prolog API to prove a policy option String myQuery = "challenge(Agent, Resource)"; gorgiasQuery.setResultSize(1); gorgiasQuery.setQuery(myQuery); System.out.println("Query: " + gorgiasQuery.getQuery()); GorgiasQueryResult result = apiInstance.executeQueryUsingPOST(gorgiasQuery); if(result.isHasError()) { System.out.println(result.getErrorMsg()); }else { if(result.isHasResult()) { Listresults=result.getResult(); for(QueryResult queryResult:results) { System.out.println("Variables List:"); Map argumentsMap=queryResult.getVariables(); System.out.println("\tAgent:"+argumentsMap.get("Agent")); System.out.println("\tResource:"+argumentsMap.get("Resource")); Listexplanation=queryResult.getExplanation(); ListexplanationRulesHeadWithoutVariables= queryResult.getExplanationRulesHeadWithoutVariables(); System.out.println("ExplanationStr:"+queryResult.getExplanationStr()); System.out.println(queryResult.getHumanExplanation()); } } } } catch (ApiException e) { e.printStackTrace(); } } }