예제 #1
0
  protected void initHttpClient() {
    try {
      HttpClientBuilder builder = HttpClient.uri(url);

      // set method, default to GET
      builder = builder.method(null == method ? HttpMethod.GET : method);

      // set credentials
      if (null != credentials && credentials.isValid()) {
        builder = builder.credentials(credentials.getUsername(), credentials.getPassword());
      }

      // set keystore
      if (null != keystore && keystore.isValid()) {
        builder = builder.keyStore(new FileInputStream(keystore.getFile()), keystore.getPassword());
      }

      // set headers
      if (null != headers && headers.isValid()) {
        for (final HeaderNode header : headers.getHeaders()) {
          builder = builder.header(header.getName(), header.getValue());
        }
      }

      // set query parameters
      if (null != query && query.isValid()) {
        for (final QueryParameterNode qp : query.getParameters()) {
          builder = builder.query(qp.getName(), qp.getValue());
        }
      }

      // set request entity
      if (null != entity && entity.isValid()) {
        // prefer file
        if (null != entity.getFile()) {
          final FileInputStream is = new FileInputStream(entity.getFile());
          final ByteArrayOutputStream os = new ByteArrayOutputStream();
          final byte[] buf = new byte[1024];
          try {
            for (int num; (num = is.read(buf)) != -1; ) {
              os.write(buf, 0, num);
            }
          } catch (final IOException e) {
            throw new BuildException(e);
          }

          builder = builder.entity(new ByteArrayInputStream(os.toByteArray()));
        } else {
          builder = builder.entity(entity.getText());
        }
      }

      httpClient = builder.toHttpClient();

    } catch (final Throwable t) {
      throw new BuildException(t);
    }
  }
  @Override
  public void run() {
    try {
      CompoundCommand commands = new CompoundCommand();
      List models = getViewer().getContents().getChildren();
      NodeList graphNodes = new NodeList();
      EdgeList graphEdges = new EdgeList();

      // nodes
      for (int i = 0; i < models.size(); i++) {
        Object obj = models.get(i);
        if (obj instanceof TableEditPart) {
          TableEditPart editPart = (TableEditPart) obj;
          Table model = (Table) editPart.getModel();
          EntityNode node = new EntityNode();
          node.model = model;
          node.width = editPart.getFigure().getSize().width;
          node.height = editPart.getFigure().getSize().height + 40;
          graphNodes.add(node);
        }
      }

      // edge
      for (int i = 0; i < models.size(); i++) {
        Object obj = models.get(i);
        if (obj instanceof TableEditPart) {
          TableEditPart tableEditpart = (TableEditPart) obj;

          List outgoing = tableEditpart.getSourceConnections();
          for (int j = 0; j < outgoing.size(); j++) {
            RelationEditPart conn = (RelationEditPart) outgoing.get(j);
            EntityNode source =
                (EntityNode) getNode(graphNodes, (Table) conn.getSource().getModel());
            EntityNode target =
                (EntityNode) getNode(graphNodes, (Table) conn.getTarget().getModel());

            if (source != null && target != null) {
              ConnectionEdge edge = new ConnectionEdge(source, target);
              Relation relation = (Relation) conn.getModel();
              edge.model = relation.getSource();
              graphEdges.add(edge);
            }
          }
        }
      }

      DirectedGraph graph = new DirectedGraph();
      graph.nodes = graphNodes;
      graph.edges = graphEdges;
      new DirectedGraphLayout().visit(graph);
      for (int i = 0; i < graph.nodes.size(); i++) {
        EntityNode node = (EntityNode) graph.nodes.getNode(i);
        commands.add(new LayoutCommand(node.model, node.x, node.y));
      }

      getViewer().getEditDomain().getCommandStack().execute(commands);
    } catch (Exception e) {
      logger.error(Messages.AutoLayoutAction_2, e);

      Status errStatus =
          new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e); // $NON-NLS-1$
      ExceptionDetailsErrorDialog.openError(
          PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
          "Error",
          Messages.AutoLayoutAction_3,
          errStatus); //$NON-NLS-1$
    }
  }