Ejemplo n.º 1
0
 /**
  *
  * <!-- step -->
  *
  * @see uk.ac.hutton.obiama.action.AbstractCreator#step(java.net.URI,
  *     uk.ac.hutton.obiama.msb.Instance)
  * @param actor Agent nominally responsible for creating this creation
  * @param creation Instance being created
  * @throws IntegrationInconsistencyException
  */
 protected void step(URI actor, Instance creation) throws IntegrationInconsistencyException {
   buildSpace(
       creation,
       xCells.getIntParameter(),
       yCells.getIntParameter(),
       wrapX.getBooleanParameter(),
       wrapY.getBooleanParameter());
 }
Ejemplo n.º 2
0
  public void initialize(PluginInterface _plugin_interface) {
    plugin_interface = _plugin_interface;

    log = plugin_interface.getLogger().getTimeStampedChannel("UPnP");
    log.setDiagnostic();
    log.setForce(true);

    UIManager ui_manager = plugin_interface.getUIManager();

    final BasicPluginViewModel model = ui_manager.createBasicPluginViewModel("UPnP");
    model.setConfigSectionID(UPNP_PLUGIN_CONFIGSECTION_ID);

    BasicPluginConfigModel upnp_config =
        ui_manager.createBasicPluginConfigModel(
            ConfigSection.SECTION_PLUGINS, UPNP_PLUGIN_CONFIGSECTION_ID);

    // NATPMP

    BasicPluginConfigModel natpmp_config =
        ui_manager.createBasicPluginConfigModel(
            UPNP_PLUGIN_CONFIGSECTION_ID, NATPMP_PLUGIN_CONFIGSECTION_ID);

    natpmp_config.addLabelParameter2("natpmp.info");

    ActionParameter natpmp_wiki =
        natpmp_config.addActionParameter2("Utils.link.visit", "MainWindow.about.internet.wiki");

    natpmp_wiki.setStyle(ActionParameter.STYLE_LINK);

    natpmp_wiki.addListener(
        new ParameterListener() {
          public void parameterChanged(Parameter param) {
            try {
              plugin_interface.getUIManager().openURL(new URL("http://wiki.vuze.com/w/NATPMP"));

            } catch (Throwable e) {

              e.printStackTrace();
            }
          }
        });

    natpmp_enable_param =
        natpmp_config.addBooleanParameter2("natpmp.enable", "natpmp.enable", false);

    nat_pmp_router =
        natpmp_config.addStringParameter2("natpmp.routeraddress", "natpmp.routeraddress", "");

    natpmp_enable_param.addListener(
        new ParameterListener() {
          public void parameterChanged(Parameter param) {
            setNATPMPEnableState();
          }
        });

    natpmp_enable_param.addEnabledOnSelection(nat_pmp_router);

    // UPNP

    upnp_config.addLabelParameter2("upnp.info");
    upnp_config.addHyperlinkParameter2("upnp.wiki_link", "http://wiki.vuze.com/w/UPnP");

    upnp_enable_param = upnp_config.addBooleanParameter2("upnp.enable", "upnp.enable", true);

    grab_ports_param = upnp_config.addBooleanParameter2("upnp.grabports", "upnp.grabports", false);

    release_mappings_param =
        upnp_config.addBooleanParameter2("upnp.releasemappings", "upnp.releasemappings", true);

    ActionParameter refresh_param =
        upnp_config.addActionParameter2("upnp.refresh.label", "upnp.refresh.button");

    refresh_param.addListener(
        new ParameterListener() {
          public void parameterChanged(Parameter param) {
            UPnPPlugin.this.refreshMappings();
          }
        });

    // Auto-refresh mappings every minute when enabled.
    final BooleanParameter auto_refresh_on_bad_nat_param =
        upnp_config.addBooleanParameter2(
            "upnp.refresh_on_bad_nat", "upnp.refresh_mappings_on_bad_nat", false);
    plugin_interface
        .getUtilities()
        .createTimer("upnp mapping auto-refresh", true)
        .addPeriodicEvent(
            1 * 60 * 1000,
            new UTTimerEventPerformer() {
              private long last_bad_nat = 0;

              public void perform(UTTimerEvent event) {
                if (upnp == null) {
                  return;
                }
                if (!auto_refresh_on_bad_nat_param.getValue()) {
                  return;
                }
                if (!upnp_enable_param.getValue()) {
                  return;
                }
                int status = plugin_interface.getConnectionManager().getNATStatus();
                if (status == ConnectionManager.NAT_BAD) {
                  // Only try to refresh the mappings if this is the first bad NAT
                  // message we've been given in the last 15 minutes - we don't want
                  // to endlessly retry performing the mappings
                  long now = plugin_interface.getUtilities().getCurrentSystemTime();
                  if (last_bad_nat + (15 * 60 * 1000) < now) {
                    last_bad_nat = now;
                    log.log(
                        LoggerChannel.LT_WARNING,
                        "NAT status is firewalled - trying to refresh UPnP mappings");
                    refreshMappings(true);
                  }
                }
              }
            });

    upnp_config.addLabelParameter2("blank.resource");

    alert_success_param =
        upnp_config.addBooleanParameter2("upnp.alertsuccess", "upnp.alertsuccess", false);

    alert_other_port_param =
        upnp_config.addBooleanParameter2(
            "upnp.alertothermappings", "upnp.alertothermappings", true);

    alert_device_probs_param =
        upnp_config.addBooleanParameter2(
            "upnp.alertdeviceproblems", "upnp.alertdeviceproblems", true);

    selected_interfaces_param =
        upnp_config.addStringParameter2("upnp.selectedinterfaces", "upnp.selectedinterfaces", "");
    selected_addresses_param =
        upnp_config.addStringParameter2("upnp.selectedaddresses", "upnp.selectedaddresses", "");

    ignore_bad_devices =
        upnp_config.addBooleanParameter2("upnp.ignorebaddevices", "upnp.ignorebaddevices", true);

    ignored_devices_list = upnp_config.addLabelParameter2("upnp.ignorebaddevices.info");

    ActionParameter reset_param =
        upnp_config.addActionParameter2(
            "upnp.ignorebaddevices.reset", "upnp.ignorebaddevices.reset.action");

    reset_param.addListener(
        new ParameterListener() {
          public void parameterChanged(Parameter param) {
            PluginConfig pc = plugin_interface.getPluginconfig();

            for (int i = 0; i < STATS_KEYS.length; i++) {

              String key = "upnp.device.stats." + STATS_KEYS[i];

              pc.setPluginMapParameter(key, new HashMap());
            }

            pc.setPluginMapParameter("upnp.device.ignorelist", new HashMap());

            updateIgnoreList();
          }
        });

    trace_to_log =
        upnp_config.addBooleanParameter2("upnp.trace_to_log", "upnp.trace_to_log", false);

    final boolean enabled = upnp_enable_param.getValue();

    upnp_enable_param.addEnabledOnSelection(alert_success_param);
    upnp_enable_param.addEnabledOnSelection(grab_ports_param);
    upnp_enable_param.addEnabledOnSelection(refresh_param);
    upnp_enable_param.addEnabledOnSelection(alert_other_port_param);
    upnp_enable_param.addEnabledOnSelection(alert_device_probs_param);
    upnp_enable_param.addEnabledOnSelection(release_mappings_param);
    upnp_enable_param.addEnabledOnSelection(selected_interfaces_param);
    upnp_enable_param.addEnabledOnSelection(selected_addresses_param);
    upnp_enable_param.addEnabledOnSelection(ignore_bad_devices);
    upnp_enable_param.addEnabledOnSelection(ignored_devices_list);
    upnp_enable_param.addEnabledOnSelection(reset_param);
    upnp_enable_param.addEnabledOnSelection(trace_to_log);

    natpmp_enable_param.setEnabled(enabled);

    model.getStatus().setText(enabled ? "Running" : "Disabled");

    upnp_enable_param.addListener(
        new ParameterListener() {
          public void parameterChanged(Parameter p) {
            boolean e = upnp_enable_param.getValue();

            natpmp_enable_param.setEnabled(e);

            model.getStatus().setText(e ? "Running" : "Disabled");

            if (e) {

              startUp();

            } else {

              closeDown(true);
            }

            setNATPMPEnableState();
          }
        });

    model.getActivity().setVisible(false);
    model.getProgress().setVisible(false);

    log.addListener(
        new LoggerChannelListener() {
          public void messageLogged(int type, String message) {
            model.getLogArea().appendText(message + "\n");
          }

          public void messageLogged(String str, Throwable error) {
            model.getLogArea().appendText(error.toString() + "\n");
          }
        });

    // startup() used to be called on initializationComplete()
    // Moved to delayed task because rootDeviceFound can take
    // a lot of CPU cycle.  Let's hope nothing breaks
    DelayedTask dt =
        plugin_interface
            .getUtilities()
            .createDelayedTask(
                new Runnable() {
                  public void run() {
                    if (enabled) {

                      updateIgnoreList();

                      startUp();
                    }
                  }
                });
    dt.queue();

    plugin_interface.addListener(
        new PluginListener() {
          public void initializationComplete() {}

          public void closedownInitiated() {
            if (services.size() == 0) {

              plugin_interface.getPluginconfig().setPluginParameter("plugin.info", "");
            }
          }

          public void closedownComplete() {
            closeDown(true);
          }
        });
  }
  static int parseParameters(
      final Node actionRootNode,
      final ILogger logger,
      final String nodePath,
      final Map parameterMap,
      final Map mapTo,
      final boolean inputVar) {
    try {
      List parameters = actionRootNode.selectNodes(nodePath);

      // TODO create objects to represent the types
      // TODO need source variable list
      Iterator parametersIterator = parameters.iterator();
      Node parameterNode;
      String parameterName;
      String parameterType;
      ActionParameter parameter;
      List variableNodes;
      List variables;
      Node variableNode;
      Iterator variablesIterator;
      String variableSource;
      String variableName;
      int variableIdx;
      Object defaultValue = null;

      while (parametersIterator.hasNext()) {
        parameterNode = (Node) parametersIterator.next();
        parameterName = parameterNode.getName();
        parameterType = XmlDom4JHelper.getNodeText("@type", parameterNode); // $NON-NLS-1$

        if (mapTo != null) {
          mapTo.put(
              parameterName,
              XmlDom4JHelper.getNodeText("@mapping", parameterNode, parameterName)); // $NON-NLS-1$
        }

        defaultValue = SequenceDefinition.getDefaultValue(parameterNode);
        // get the list of sources for this parameter
        variableNodes =
            parameterNode.selectNodes(
                (inputVar) ? "sources/*" : "destinations/*"); // $NON-NLS-1$ //$NON-NLS-2$
        variablesIterator = variableNodes.iterator();
        variableIdx = 1;
        variables = new ArrayList();
        while (variablesIterator.hasNext()) {
          variableNode = (Node) variablesIterator.next();
          // try to resolve the parameter value for this
          try {
            variableSource = variableNode.getName();
            variableName = variableNode.getText();
            ActionParameterSource variable =
                new ActionParameterSource(variableSource, variableName);
            if (SequenceDefinition.debug) {
              logger.debug(
                  Messages.getInstance()
                      .getString(
                          "SequenceDefinition.DEBUG_ADDING_SOURCE_FOR_PARAMETER",
                          variableSource,
                          parameterName)); //$NON-NLS-1$
            }

            variables.add(variable);
          } catch (Exception e) {
            logger.error(
                Messages.getInstance()
                    .getErrorString(
                        "SequenceDefinition.ERROR_0004_VARIABLE_SOURCE_NOT_VALID",
                        Integer.toString(variableIdx),
                        parameterName),
                e); //$NON-NLS-1$
          }
          variableIdx++;
        }
        if (defaultValue != null) {
          if (SequenceDefinition.debug) {
            logger.debug(
                Messages.getInstance()
                    .getString(
                        "SequenceDefinition.DEBUG_USING_DEFAULT_VALUE",
                        defaultValue.toString(),
                        parameterName)); //$NON-NLS-1$
          }
        }
        boolean isOutputParameter =
            Boolean.parseBoolean(
                XmlDom4JHelper.getNodeText(
                    "@is-output-parameter", parameterNode, "true")); // $NON-NLS-1$ //$NON-NLS-2$
        parameter =
            new ActionParameter(parameterName, parameterType, null, variables, defaultValue);
        parameter.setOutputParameter(isOutputParameter);
        parameterMap.put(parameterName, parameter);
      }
      return ISequenceDefinition.ACTION_SEQUENCE_DEFINITION_OK;
    } catch (Exception e) {
      logger.error(
          Messages.getInstance().getErrorString("SequenceDefinition.ERROR_0005_PARSING_PARAMETERS"),
          e); //$NON-NLS-1$
    }

    return ISequenceDefinition.ACTION_SEQUENCE_DEFINITION_INVALID_ACTION_DOC;
  }