コード例 #1
0
    /**
     * Exports all synchronize-enabled PRISMS data to a file to be imported later
     *
     * @param ui The user interface to communicate with
     * @param global Whether to export ALL data available to synchronization instead of just the
     *     local data and local modifications
     * @return Whether the export succeeded
     */
    public boolean exportData(prisms.ui.UI ui, boolean global) {
      prisms.ui.UI.DefaultProgressInformer pi = new prisms.ui.UI.DefaultProgressInformer();
      pi.setProgressText("Configuring PRISMS applications");
      ui.startTimedTask(pi);
      try {
        for (PrismsApplication app : theApps) {
          if (!app.isConfigured()) {
            pi.setProgressText("Configuring " + app.getName());
            // Configure the application. Can't be done except by the PrismsServer
            prisms.util.PrismsServiceConnector conn =
                new prisms.util.PrismsServiceConnector(
                    theApps[0].getEnvironment().getIDs().getLocalInstance().location,
                    app.getName(),
                    app.getClients()[0].getName(),
                    "System");
            try {
              conn.getConnector()
                  .setTrustManager(
                      new javax.net.ssl.X509TrustManager() {
                        public void checkClientTrusted(
                            java.security.cert.X509Certificate[] chain, String authType)
                            throws java.security.cert.CertificateException {}

                        public void checkServerTrusted(
                            java.security.cert.X509Certificate[] chain, String authType)
                            throws java.security.cert.CertificateException {}

                        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                          return null;
                        }
                      });
            } catch (java.security.GeneralSecurityException e) {
              log.error("Could not set trust manager for service connector", e);
            }
            conn.setUserSource(theApps[0].getEnvironment().getUserSource());
            log.debug("Application " + app.getName() + " is not yet configured. Configuring.");
            try {
              conn.init();
              conn.logout(true);
            } catch (java.io.IOException e) {
              if (!app.isConfigured()) {
                ui.error(
                    "Could not configure application "
                        + app.getName()
                        + ". Export data cannot proceed.");
                log.error("Could not configure application " + app.getName(), e);
                return false;
              }
            }
            if (!app.isConfigured()) {
              ui.error(
                  "Could not configure application "
                      + app.getName()
                      + ". Export data cannot proceed.");
              log.error("Could not configure application " + app.getName());
              return false;
            }
          }
        }
        return exportData(ui, pi, global);
      } finally {
        pi.setDone();
      }
    }