/** * AdminConnection.java * Author: Francesco Rosso (rosso@eurix.it) * * This file is part of PrestoPRIME Preservation Platform (P4). * * Copyright (C) 2009-2012 EURIX Srl, Torino, Italy * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package eu.prestoprime.p4gui.connection; import it.eurix.archtools.workflow.jaxb.StatusType; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import javax.xml.datatype.DatatypeFactory; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.entity.mime.MultipartEntity; import org.apache.http.entity.mime.content.StringBody; import org.apache.http.util.EntityUtils; import eu.prestoprime.p4gui.admin.fixity.FixityCheckResponse; import eu.prestoprime.p4gui.model.JobList; import eu.prestoprime.p4gui.model.P4Service; import eu.prestoprime.p4gui.services.auth.RoleManager.USER_ROLE; import eu.prestoprime.p4gui.util.parse.AdminActions; public abstract class AdminConnection { public static String createUserID(P4Service service, USER_ROLE role) { String path = service.getURL() + "/conf/user/" + role; try { P4HttpClient client = new P4HttpClient(service.getUserID()); HttpRequestBase request = new HttpPut(path); HttpResponse response = client.executeRequest(request); HttpEntity entity = response.getEntity(); if (entity != null) { String line; BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent())); if ((line = reader.readLine()) != null) { return line; } } } catch (Exception e) { e.printStackTrace(); } return null; } public static JobList monitorJobs(P4Service service, String filter) { if (filter == null || filter.equals("")) filter = "all"; JobList jobList = new JobList(); try { String path = service.getURL() + "/admin/jobs/" + filter; P4HttpClient client = new P4HttpClient(service.getUserID()); HttpRequestBase request = new HttpGet(path); HttpEntity entity = client.executeRequest(request).getEntity(); if (entity != null) { BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent())); String line; while ((line = reader.readLine()) != null) { String[] fields = line.split("\\t"); jobList.addJob(jobList.new Job(fields[0], // jobID StatusType.valueOf(fields[1].toUpperCase()), // status fields[2], // wfID fields[3].equals("") ? null : DatatypeFactory.newInstance().newXMLGregorianCalendar(fields[3]), // startup fields[4].equals("") ? 0L : Long.parseLong(fields[4]), // duration Integer.parseInt(fields[5]), // totalSteps Integer.parseInt(fields[6]), // lastCompletedStep fields.length < 8 ? null : fields[7])); // lastCompletedService } } } catch (Exception e) { e.printStackTrace(); } return jobList; } public static List<String> checkDataType(P4Service service, String dataType, boolean available) { List<String> aipList = new ArrayList<>(); String path = service.getURL() + "/access/dip/list/" + dataType + "?available=" + available; try { P4HttpClient client = new P4HttpClient(service.getUserID()); HttpRequestBase request = new HttpGet(path); HttpResponse response = client.executeRequest(request); HttpEntity entity = response.getEntity(); if (entity != null) { String line; BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent())); while ((line = reader.readLine()) != null) { aipList.add(line.trim()); } } } catch (Exception e) { e.printStackTrace(); } return aipList; } public static List<String> checkFormatRisk(P4Service service) { List<String> aipList = new ArrayList<>(); String path = service.getURL() + "/admin/aip/risk/format"; try { P4HttpClient client = new P4HttpClient(service.getUserID()); HttpRequestBase request = new HttpGet(path); HttpResponse response = client.executeRequest(request); HttpEntity entity = response.getEntity(); if (entity != null) { String line; BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent())); while ((line = reader.readLine()) != null) { aipList.add(line.trim()); } } } catch (Exception e) { e.printStackTrace(); } return aipList; } @Deprecated public static void getAdminActions(P4Service service, AdminActions actions) { try { String path = service.getURL() + "/access/dip/list/actions"; P4HttpClient client = new P4HttpClient(service.getUserID()); HttpRequestBase request = new HttpGet(path); HttpResponse response = client.executeRequest(request); HttpEntity entity = response.getEntity(); BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent())); String line; while ((line = reader.readLine()) != null) actions.addAction(line); } catch (Exception e) { e.printStackTrace(); } } public static List<String> getFixityChecklist(P4Service service) { List<String> records = new ArrayList<String>(); try { String path = service.getURL() + "/admin/aip/risk/fixity"; HttpRequestBase request = new HttpGet(path); P4HttpClient client = new P4HttpClient(service.getUserID()); HttpEntity entity = client.executeRequest(request).getEntity(); if (entity != null) { BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent())); String line; while ((line = reader.readLine()) != null) { records.add(line); } } EntityUtils.consume(entity); } catch (Exception e) { e.printStackTrace(); } return records; } public static FixityCheckResponse getFixityCheck(P4Service service, String id) { try { P4HttpClient client = new P4HttpClient(service.getUserID()); String path = service.getURL() + "/admin/fixitycheck/" + id; HttpRequestBase request = new HttpGet(path); HttpEntity entity = client.executeRequest(request).getEntity(); BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent())); String line; if ((line = reader.readLine()) != null) { return new FixityCheckResponse(line); } } catch (Exception e) { e.printStackTrace(); } return null; } public static boolean restoreFromLTO(P4Service service, String from, String to) { try { String path = service.getURL() + "/admin/restore"; HttpRequestBase request = new HttpPost(path); MultipartEntity part = new MultipartEntity(); part.addPart("from", new StringBody(from)); part.addPart("to", new StringBody(to)); ((HttpPost) request).setEntity(part); P4HttpClient client = new P4HttpClient(service.getUserID()); HttpEntity entity = client.executeRequest(request).getEntity(); if (entity != null) { BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent())); String line; if ((line = reader.readLine()) != null) { if (line.equals("Error")) { return false; } else { return true; } } } } catch (Exception e) { e.printStackTrace(); } return false; } }