Package uk.ac.osswatch.simal.model.jena.simal

Source Code of uk.ac.osswatch.simal.model.jena.simal.Review

package uk.ac.osswatch.simal.model.jena.simal;
/*
* Copyright 2007 University of Oxford
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import java.text.DateFormat;
import java.text.ParseException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import uk.ac.osswatch.simal.model.IPerson;
import uk.ac.osswatch.simal.model.IProject;
import uk.ac.osswatch.simal.model.jena.Person;
import uk.ac.osswatch.simal.model.jena.Project;
import uk.ac.osswatch.simal.model.jena.Resource;
import uk.ac.osswatch.simal.model.simal.IReview;
import uk.ac.osswatch.simal.model.simal.SimalOntology;
import uk.ac.osswatch.simal.rdf.SimalException;

import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.Statement;

public class Review extends Resource implements IReview {
  private static final Logger logger = LoggerFactory
      .getLogger(Review.class);

  private static final long serialVersionUID = 1L;

  public Review(com.hp.hpl.jena.rdf.model.Resource resource) {
      super(resource);
    }
   
  public Calendar getDate() {
      String dateString = getLiteralValue(SimalOntology.DATE);
      if (dateString != null) {
        Calendar cal = GregorianCalendar.getInstance();
        try {
      cal.setTime(getDateFormatter().parse(dateString));
    } catch (ParseException e) {
      logger.error("Unable to parse date string", e);
      return null;
    }
        return cal;
      } else {
        logger.warn("Date of review is not set");
        return null;
      }
  }
 
  public void setDate(Calendar cal) {
    Model model = getJenaResource().getModel();
    String dateString = getDateFormatter().format(cal.getTime());
      Statement statement = model.createLiteralStatement(getJenaResource(),
          SimalOntology.DATE, dateString);
      model.add(statement);
  }
 
  @Override
  public String getLabel()  {
    StringBuilder label = new StringBuilder(getType());
    label.append(" review of '");
    try {
      label.append(getProject().getLabel());
    } catch (SimalException e1) {
      label.append("UKNOWN PROJECT");
    }
    label.append("', performed by ");
    try {
      label.append(getReviewer().getLabel());
    } catch (SimalException e) {
      label.append("unknown reviewer");
    }
    label.append(" on ");
    label.append(getShortDate());
    return label.toString();
  }

  public IPerson getReviewer() throws SimalException {
    List<Statement> reviewers = listProperties(SimalOntology.PERSON);
    if (reviewers.size() == 0) {
      throw new SimalException("No reviewer recorded for review: ");
    } else if (reviewers.size() > 1) {
      throw new SimalException("More than one reviewer recorded for review ");
    }
    IPerson reviewer = new Person(reviewers.get(0).getResource());
    return reviewer;
  }

  public String getType() {
    String type = getLiteralValue(SimalOntology.TYPE);
    if (type == null || type.equals("")) {
      return "Unknown type";
    } else {
      return type;
    }
  }
 
  public void setType(String type) {
    Model model = getJenaResource().getModel();
      Statement statement = model.createLiteralStatement(getJenaResource(),
          SimalOntology.TYPE, type);
      model.add(statement);
  }

  public IProject getProject() throws SimalException {
    List<Statement> projects = listProperties(SimalOntology.PROJECT);
    if (projects.size() == 0) {
      throw new SimalException("No project recorded for review: ");
    } else if (projects.size() > 1) {
      throw new SimalException("More than one project recorded for review ");
    }
    IProject project = new Project(projects.get(0).getResource());
    return project;
  }

  public void setProject(IProject project) {
    Model model = getJenaResource().getModel();
      Statement statement = model.createStatement(getJenaResource(),
          SimalOntology.PROJECT, (com.hp.hpl.jena.rdf.model.Resource) project
              .getRepositoryResource());
      model.add(statement);
  }

  public void setReviewer(IPerson reviewer) {
    Model model = getJenaResource().getModel();
      Statement statement = model.createStatement(getJenaResource(),
          SimalOntology.PERSON, (com.hp.hpl.jena.rdf.model.Resource) reviewer
              .getRepositoryResource());
      model.add(statement);
   
  }

  public String getShortDate() {
    DateFormat df = getDateFormatter();
    return df.format(getDate().getTime());
  }

  private DateFormat getDateFormatter() {
    DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.UK);
    return df;
  }
}
TOP

Related Classes of uk.ac.osswatch.simal.model.jena.simal.Review

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.