package module.mission.domain; import javax.ws.rs.client.ClientBuilder; import org.fenixedu.bennu.core.domain.User; import org.fenixedu.bennu.core.security.Authenticate; import org.fenixedu.bennu.core.util.CoreConfiguration; import pt.ist.expenditureTrackingSystem._development.ExpenditureConfiguration; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; public class RemoteMissionProcess extends RemoteMissionProcess_Base { protected RemoteMissionProcess() { super(); } public RemoteMissionProcess(final MissionProcess missionProcess, final RemoteMissionSystem remoteMissionSystem, final String processNumber, final String externalId) { setMissionProcess(missionProcess); setProcessNumber(processNumber); setRemoteOid(externalId); setRemoteMissionSystem(remoteMissionSystem); } public void connect() { // try { final User user = Authenticate.getUser(); final String post = ClientBuilder.newClient().target(getRemoteMissionSystem().getConnectUrl()) .queryParam("processNumber", getMissionProcess().getProcessNumber()) .queryParam("externalId", getMissionProcess().getExternalId()) .queryParam("hostname", CoreConfiguration.getConfiguration().applicationUrl()) .queryParam("remoteProcessNumber", getProcessNumber()) .queryParam("username", user == null ? null : user.getUsername()) .queryParam("access_token", ExpenditureConfiguration.get().apiToken()).request() .header("X-Requested-With", "XMLHttpRequest") .post(null, String.class); JsonParser parser = new JsonParser(); final JsonElement element = parser.parse(post); final JsonObject object = (JsonObject) element; setRemoteOid(object.get("externalId").getAsString()); // } catch (final UniformInterfaceException ex) { // final ClientResponse response = ex.getResponse(); // if (response != null) { // if (response.getStatus() == 400) { // throw new DomainException(Bundle.EXPENDITURE, "bad.mission.number"); // } // } // throw new Error(ex); // } } public void disconnect() { final User user = Authenticate.getUser(); ClientBuilder.newClient().target(getRemoteMissionSystem().getConnectUrl()) .queryParam("processNumber", getMissionProcess().getProcessNumber()) .queryParam("externalId", getMissionProcess().getExternalId()) .queryParam("hostname", CoreConfiguration.getConfiguration().applicationUrl()) .queryParam("remoteProcessNumber", getProcessNumber()) .queryParam("username", user == null ? null : user.getUsername()) .queryParam("access_token", ExpenditureConfiguration.get().apiToken()).request() .header("X-Requested-With", "XMLHttpRequest") .get(String.class); } public void delete() { setMissionProcess(null); setRemoteMissionSystem(null); super.deleteDomainObject(); } }