eu.prestoprime.p4gui.connection.CommonConnection.java Source code

Java tutorial

Introduction

Here is the source code for eu.prestoprime.p4gui.connection.CommonConnection.java

Source

/**
 * CommonConnection.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.plugin.WfPlugin;
import it.eurix.archtools.workflow.plugin.WfPlugin.WfService;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpRequestBase;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import eu.prestoprime.p4gui.model.P4Service;
import eu.prestoprime.p4gui.services.auth.RoleManager.USER_ROLE;

public abstract class CommonConnection {

    public static String getVersion(P4Service service) {
        String path = service.getURL() + "/version";

        try {
            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;
            if ((line = reader.readLine()) != null) {
                return line;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static USER_ROLE getUserRole(P4Service service) {
        String path = service.getURL() + "/checkrole";

        try {
            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;
            if ((line = reader.readLine()) != null) {
                try {
                    return USER_ROLE.valueOf(line);
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                    return USER_ROLE.guest;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return USER_ROLE.guest;
    }

    public static String getTermsOfUse(P4Service service, String role) {
        String path = service.getURL() + "/terms/" + role;

        StringBuffer result = new StringBuffer();
        try {
            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) {
                result.append(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result.toString();
    }

    public static List<String> getAvailableFileList(P4Service service) throws ConnectionException {
        List<String> fileList = new ArrayList<>();

        String path = service.getURL() + "/filelist";

        try {
            P4HttpClient client = new P4HttpClient(service.getUserID());
            HttpRequestBase request = new HttpGet(path);
            HttpResponse response = client.executeRequest(request);
            if (response.getStatusLine().getStatusCode() == 200) {
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
                    String line;
                    while ((line = reader.readLine()) != null)
                        if (!line.contains("Thumbs.db")) {
                            fileList.add(line);
                        }
                    return fileList;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        throw new ConnectionException("Error listings files...");
    }

    public static Map<WfPlugin, Set<WfService>> getAvailablePlugins(P4Service service) throws ConnectionException {
        Map<WfPlugin, Set<WfService>> plugins = new HashMap<>();

        String path = service.getURL() + "/pluginlist";

        try {
            P4HttpClient client = new P4HttpClient(service.getUserID());
            HttpRequestBase request = new HttpGet(path);
            HttpResponse response = client.executeRequest(request);
            if (response.getStatusLine().getStatusCode() == 200) {
                HttpEntity entity = response.getEntity();
                if (entity != null && entity.getContent() != null) {
                    BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
                    StringBuffer sb = new StringBuffer();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line.trim());
                    }

                    JSONObject json = new JSONObject(sb.toString());
                    Iterator<String> it = json.keys();
                    while (it.hasNext()) {
                        final String pluginName = it.next();
                        WfPlugin plugin = new WfPlugin() {

                            @Override
                            public Class<? extends Annotation> annotationType() {
                                return WfPlugin.class;
                            }

                            @Override
                            public String name() {
                                return pluginName;
                            }
                        };

                        Set<WfService> tasks = new HashSet<>();

                        JSONArray jTasks = json.getJSONArray(pluginName);
                        for (int i = 0; i < jTasks.length(); i++) {
                            JSONObject jTask = jTasks.getJSONObject(i);
                            final String taskService = jTask.getString("service");
                            final String taskVersion = jTask.getString("version");
                            WfService task = new WfService() {

                                @Override
                                public Class<? extends Annotation> annotationType() {
                                    return WfService.class;
                                }

                                @Override
                                public String version() {
                                    return taskVersion;
                                }

                                @Override
                                public String name() {
                                    return taskService;
                                }
                            };

                            tasks.add(task);
                        }

                        plugins.put(plugin, tasks);
                    }

                    return plugins;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        throw new ConnectionException("Error listing plugins...");
    }
}