Ejemplo n.º 1
0
  @RequestMapping(value = "/{needId}/listConnections", method = RequestMethod.GET)
  public String listConnections(@PathVariable String needId, Model model) {

    List<Need> needs = needRepository.findById(Long.valueOf(needId));
    if (needs.isEmpty()) return "noNeedFound";
    Need need = needs.get(0);
    List<Connection> connections = connectionRepository.findByNeedURI(need.getNeedURI());
    model.addAttribute("connections", connections);

    // create an URI iterator from the matches and fetch the linked data descriptions for the needs.
    final Iterator<Connection> connectionIterator = connections.iterator();
    Iterator<Dataset> datasetIterator =
        WonLinkedDataUtils.getModelForURIs(
            new ProjectingIterator<Connection, URI>(connectionIterator) {
              @Override
              public URI next() {
                return connectionIterator.next().getRemoteNeedURI();
              }
            },
            this.linkedDataSource);
    Iterator<NeedPojo> needPojoIterator = WonOwnerWebappUtils.toNeedPojos(datasetIterator);

    // create a list of models and add all the descriptions:
    List<NeedPojo> remoteNeeds = new ArrayList<NeedPojo>(connections.size());
    while (connectionIterator.hasNext()) {
      remoteNeeds.add(needPojoIterator.next());
    }
    model.addAttribute("remoteNeeds", remoteNeeds);
    return "listConnections";
  }
Ejemplo n.º 2
0
  @RequestMapping(value = "/{needId}", method = RequestMethod.GET)
  public String viewNeed(@PathVariable String needId, Model model) {

    model.addAttribute("needId", needId);

    List<Need> needs = needRepository.findById(Long.valueOf(needId));
    if (needs.isEmpty()) return "noNeedFound";

    Need need = needs.get(0);
    model.addAttribute("active", need.getState() != NeedState.ACTIVE ? "activate" : "deactivate");
    model.addAttribute("needURI", need.getNeedURI());
    List<Facet> facets = facetRepository.findByNeedURI(need.getNeedURI());

    NeedPojo needCommandPojo = new NeedPojo(facets);
    model.addAttribute("command", needCommandPojo);

    NeedPojo pojo =
        new NeedPojo(
            need.getNeedURI(),
            linkedDataSource.getDataForResource(need.getNeedURI()).getDefaultModel());
    pojo.setState(need.getState());
    model.addAttribute("pojo", pojo);

    // set facets on 'command': (needed for the dropdown list in the 'connect' control TODO:
    // deuglify
    needCommandPojo.setNeedFacetURIs(pojo.getNeedFacetURIs());

    return "viewNeed";
  }
Ejemplo n.º 3
0
  @RequestMapping(value = "/", method = RequestMethod.GET)
  public String listNeeds(Model model) {

    model.addAttribute("needs", needRepository.findAll());

    return "listNeeds";
  }
Ejemplo n.º 4
0
  @RequestMapping(value = "/match/{matchId}/connect", method = RequestMethod.POST)
  public String connect(@PathVariable String matchId, Model model) {
    String ret = "noNeedFound";

    try {
      List<Match> matches = matchRepository.findById(Long.valueOf(matchId));
      if (!matches.isEmpty()) {
        Match match = matches.get(0);
        List<Need> needs = needRepository.findByNeedURI(match.getFromNeed());
        if (!needs.isEmpty()) {
          ret =
              "redirect:/need/"
                  + needs
                      .get(0)
                      .getId()
                      .toString(); // viewNeed(needs.get(0).getId().toString(), model);
        }
        // TODO: match object does not contain facet info, assume OwnerFacet.
        com.hp.hpl.jena.rdf.model.Model facetModel =
            WonRdfUtils.FacetUtils.createFacetModelForHintOrConnect(
                FacetType.OwnerFacet.getURI(), FacetType.OwnerFacet.getURI());
        ownerService.connect(match.getFromNeed(), match.getToNeed(), facetModel, null);
      }
    } catch (ConnectionAlreadyExistsException e) {
      logger.warn("caught ConnectionAlreadyExistsException:", e);
    } catch (IllegalMessageForNeedStateException e) {
      logger.warn("caught IllegalMessageForNeedStateException:", e);
    } catch (NoSuchNeedException e) {
      logger.warn("caught NoSuchNeedException:", e);
    } catch (InterruptedException e) {
      logger.warn("caught InterruptedEception", e);
    } catch (ExecutionException e) {
      logger.warn("caught ExecutionException", e);
    } catch (CamelConfigurationFailedException e) {
      logger.warn(
          "caught CamelConfigurationException",
          e); // To change body of catch statement use File | Settings | File Templates.
      logger.warn("caught CamelConfigurationFailedException");
    } catch (Exception e) {
      logger.warn("caught Exception", e);
    }

    return ret;
  }
Ejemplo n.º 5
0
 @RequestMapping(value = "/{needId}/toggle", method = RequestMethod.POST)
 public String toggleNeed(@PathVariable String needId, Model model)
     throws NoSuchConnectionFault, IllegalMessageForConnectionStateFault {
   List<Need> needs = needRepository.findById(Long.valueOf(needId));
   if (needs.isEmpty()) return "noNeedFound";
   Need need = needs.get(0);
   try {
     if (need.getState() == NeedState.ACTIVE) {
       ownerService.deactivate(need.getNeedURI(), null);
     } else {
       ownerService.activate(need.getNeedURI(), null);
     }
   } catch (NoSuchNeedException e) {
     logger.warn("caught NoSuchNeedException:", e);
   } catch (Exception e) {
     logger.warn("caught Exception", e);
   }
   return "redirect:/need/" + need.getId().toString();
   // return viewNeed(need.getId().toString(), model);
 }
Ejemplo n.º 6
0
  // TODO use NeedModelBuilder here instead
  @RequestMapping(value = "/create", method = RequestMethod.POST)
  public String createNeedPost(@ModelAttribute("SpringWeb") NeedPojo needPojo, Model model)
      throws Exception {
    URI needURI;

    try {
      URI ownerURI = this.uriService.getOwnerProtocolOwnerServiceEndpointURI();

      NeedPojoNeedModelBuilder needPojoNeedModelBuilder = new NeedPojoNeedModelBuilder(needPojo);
      needPojoNeedModelBuilder.setUri("no:uri");
      com.hp.hpl.jena.rdf.model.Model needModel = needPojoNeedModelBuilder.build();
      needModel.setNsPrefix("", "no:uri");

      if (needPojo.getWonNode().equals("")) {
        ListenableFuture<URI> futureResult =
            ownerService.createNeed(needModel, needPojo.getState() == NeedState.ACTIVE, null);
        needURI = futureResult.get();
      } else {
        ListenableFuture<URI> futureResult =
            ownerService.createNeed(
                needModel,
                needPojo.getState() == NeedState.ACTIVE,
                URI.create(needPojo.getWonNode()),
                null);
        needURI = futureResult.get();
      }

      List<Need> needs = needRepository.findByNeedURI(needURI);
      // TODO: race condition between need saving logic and redirect. adapt interface.
      if (needs.size() == 1) return "redirect:/need/" + needs.get(0).getId().toString();
      // return viewNeed(need.getId().toString(), model);
    } catch (IllegalNeedContentException e) {
      logger.warn("caught IllegalNeedContentException:", e);
    }

    model.addAttribute("command", new NeedPojo());

    return "createNeed";
  }
Ejemplo n.º 7
0
  @RequestMapping(value = "/{needId}/connect", method = RequestMethod.POST)
  public String connect2Need(
      @PathVariable String needId, @ModelAttribute("SpringWeb") NeedPojo needPojo, Model model) {
    try {
      List<Need> needs = needRepository.findById(Long.valueOf(needId));
      if (needs.isEmpty()) return "noNeedFound";

      Need need1 = needs.get(0);

      com.hp.hpl.jena.rdf.model.Model facetModel =
          WonRdfUtils.FacetUtils.createFacetModelForHintOrConnect(
              URI.create(needPojo.getOwnFacetURI()), URI.create(needPojo.getRemoteFacetURI()));
      ownerService.connect(need1.getNeedURI(), new URI(needPojo.getNeedURI()), facetModel, null);
      return "redirect:/need/"
          + need1.getId().toString(); // viewNeed(need1.getId().toString(), model);
    } catch (URISyntaxException e) {
      logger.warn("caught URISyntaxException:", e);
    } catch (ConnectionAlreadyExistsException e) {
      logger.warn("caught ConnectionAlreadyExistsException:", e);
    } catch (IllegalMessageForNeedStateException e) {
      logger.warn("caught IllegalMessageForNeedStateException:", e);
    } catch (NoSuchNeedException e) {
      logger.warn("caught NoSuchNeedException:", e);
    } catch (InterruptedException e) {
      logger.warn("caught InterruptedException", e);
    } catch (ExecutionException e) {
      logger.warn("caught ExcutionException", e);
    } catch (CamelConfigurationFailedException e) {
      logger.warn("caught CameConfigurationException", e);
      logger.warn("caught CamelConfigurationFailedException", e);
    } catch (Exception e) {
      logger.warn("caught Exception", e);
    }

    return "noNeedFound";
  }