Package org.apache.marmotta.kiwi.versioning.model

Examples of org.apache.marmotta.kiwi.versioning.model.Version


     * @throws SQLException
     */
    public void removeVersions(Date from, Date to) throws SQLException {
        CloseableIteration<Version, SQLException> it = listVersionsInternal(from,to);
        while(it.hasNext()) {
            Version next = it.next();
            removeVersion(next.getId());
        }
    }
View Full Code Here


     * @param row
     * @return
     * @throws SQLException
     */
    protected Version constructVersionFromDatabase(ResultSet row) throws SQLException {
        Version result = new Version(row.getLong("id"));
        result.setCommitTime(new Date(row.getTimestamp("createdAt").getTime()));

        if(row.getObject("creator") != null) {
            result.setCreator((KiWiResource) loadNodeById(row.getLong("creator")));
        }

        // query the versions_added and versions_removed join tables to reconstruct the triple sets
        PreparedStatement queryAdded = getPreparedStatement("load.versions_added");
        synchronized (queryAdded) {
            queryAdded.clearParameters();
            queryAdded.setLong(1,result.getId());
            ResultSet addedRow = queryAdded.executeQuery();
            try {
                while(addedRow.next()) {
                    result.addTriple(loadTripleById(addedRow.getLong("triple_id")));
                }
            } finally {
                addedRow.close();
            }
        }

        PreparedStatement queryRemoved = getPreparedStatement("load.versions_removed");
        synchronized (queryRemoved) {
            queryRemoved.clearParameters();
            queryRemoved.setLong(1,result.getId());
            ResultSet removedRow = queryRemoved.executeQuery();
            try {
                while(removedRow.next()) {
                    result.removeTriple(loadTripleById(removedRow.getLong("triple_id")));
                }
            } finally {
                removedRow.close();
            }
        }
View Full Code Here

     * @param data
     */
    @Override
    public void afterCommit(TransactionData data) {
        if(data.getAddedTriples().size() > 0 || data.getRemovedTriples().size() > 0) {
            Version version = new Version();

            version.setCommitTime(data.getCommitTime());
            for(Statement stmt : data.getAddedTriples()) {
                if(filter.accept(stmt)) {
                    version.getAddedTriples().add(stmt);
                }
            }
            for(Statement stmt : data.getRemovedTriples()) {
                if(filter.accept(stmt)) {
                    version.getRemovedTriples().add(stmt);
                }
            }

            if(version.getAddedTriples().size() > 0 || version.getRemovedTriples().size() > 0) {

                try {
                    final KiWiVersioningConnection connection = persistence.getConnection();
                    try {
                        connection.storeVersion(version);
View Full Code Here

     * @throws SQLException
     */
    public void removeVersions(Date from, Date to) throws SQLException {
        CloseableIteration<Version, SQLException> it = listVersionsInternal(from,to);
        while(it.hasNext()) {
            Version next = it.next();
            removeVersion(next.getId());
        }
    }
View Full Code Here

     * @param row
     * @return
     * @throws SQLException
     */
    protected Version constructVersionFromDatabase(ResultSet row) throws SQLException {
        Version result = new Version(row.getLong("id"));
        result.setCommitTime(new Date(row.getTimestamp("createdAt").getTime()));

        if(row.getObject("creator") != null) {
            result.setCreator((KiWiResource) loadNodeById(row.getLong("creator")));
        }

        // query the versions_added and versions_removed join tables to reconstruct the triple sets
        PreparedStatement queryAdded = getPreparedStatement("load.versions_added");
        synchronized (queryAdded) {
            queryAdded.clearParameters();
            queryAdded.setLong(1,result.getId());
            ResultSet addedRow = queryAdded.executeQuery();
            try {
                while(addedRow.next()) {
                    result.addTriple(loadTripleById(addedRow.getLong("triple_id")));
                }
            } finally {
                addedRow.close();
            }
        }

        PreparedStatement queryRemoved = getPreparedStatement("load.versions_removed");
        synchronized (queryRemoved) {
            queryRemoved.clearParameters();
            queryRemoved.setLong(1,result.getId());
            ResultSet removedRow = queryRemoved.executeQuery();
            try {
                while(removedRow.next()) {
                    result.removeTriple(loadTripleById(removedRow.getLong("triple_id")));
                }
            } finally {
                removedRow.close();
            }
        }
View Full Code Here

            connection.storeTriple(triple1);
            connection.storeTriple(triple2);
            connection.commit();

            Version version1 = new Version();
            version1.setCommitTime(new Date());
            version1.addTriple(triple1);
            connection.storeVersion(version1);
            connection.commit();

            // check if listVersions now gives exactly one version
            List<Version> list1 = Iterations.asList(connection.listVersions());
            Assert.assertEquals("there should be exactly one version",1,list1.size());
            Assert.assertEquals("contents of version differ", version1, list1.get(0));

            // check if listVersions with subject1 now gives exactly one version
            List<Version> listr1 = Iterations.asList(connection.listVersions(subject1));
            Assert.assertEquals("there should be exactly one version", 1, listr1.size());
            Assert.assertEquals("contents of version differ", version1, listr1.get(0));


            Version version2 = new Version();
            version2.setCommitTime(new Date());
            version2.addTriple(triple2);
            version2.removeTriple(triple1);
            connection.storeVersion(version2);
            connection.commit();

            // check if listVersions now gives exactly two versions
            List<Version> list2 = Iterations.asList(connection.listVersions());
View Full Code Here

            // wait for one second to be sure to capture MySQL cutting milliseconds
            mysqlSleep();


            Version version1 = new Version();
            version1.setCommitTime(new Date());
            version1.addTriple(triple1);
            connection.storeVersion(version1);
            connection.commit();

            // wait for one second to be sure to capture MySQL cutting milliseconds
            mysqlSleep();

            Date date2 = new Date();

            // wait for one second to be sure to capture MySQL cutting milliseconds
            mysqlSleep();


            Version version2 = new Version();
            version2.setCommitTime(new Date());
            version2.addTriple(triple2);
            version2.removeTriple(triple1);
            connection.storeVersion(version2);
            connection.commit();

            // wait for one second to be sure to capture MySQL cutting milliseconds
            mysqlSleep();

            Date date3 = new Date();


            // now we test different ways of listing versions between dates
            List<Version> list1 = Iterations.asList(connection.listVersions(date1,date2));
            Assert.assertEquals("there should be exactly one version from "+date1+" to "+date2,1,list1.size());
            Assert.assertEquals("contents of version differ", version1, list1.get(0));

            // check if getLatestVersion at date2 works
            Version latest2 = connection.getLatestVersion(subject,date2);
            Assert.assertNotNull("latest version for subject was not found",latest2);
            Assert.assertEquals("latest version is not the expected version", version1,latest2);

            // check if listVersions with subject1 now gives exactly one version
            List<Version> listr1 = Iterations.asList(connection.listVersions(subject,date1,date2));
View Full Code Here

            connection.storeTriple(triple1);
            connection.storeTriple(triple2);
            connection.commit();

            Version version1 = new Version();
            version1.setCommitTime(new Date());
            version1.addTriple(triple1);
            connection.storeVersion(version1);
            connection.commit();

            // check if listVersions now gives exactly one version
            List<Version> list1 = Iterations.asList(connection.listVersions());
            Assert.assertEquals("there should be exactly one version",1,list1.size());
            Assert.assertEquals("contents of version differ", version1, list1.get(0));

            Version version2 = new Version();
            version2.setCommitTime(new Date());
            version2.addTriple(triple2);
            version2.removeTriple(triple1);
            connection.storeVersion(version2);
            connection.commit();

            // check if listVersions now gives exactly two versions
            List<Version> list2 = Iterations.asList(connection.listVersions());
View Full Code Here

            //loop to all versions to fill the versionset
            RepositoryResult<Version> versions = versioningService.listVersions(resource);

            while(versions.hasNext()) {

                Version v = versions.next();

                //set first as current if there is no current version yet
                if(versionset.getCurrent() == null) versionset.setCurrent(v);

                //set first version
                if(versionset.getFirst() == null) versionset.setFirst(v);

                //set last version
                versionset.setLast(v);

                //set previous as long as id is smaller than the current one
                if(v.getId() < versionset.getCurrent().getId()) {
                    versionset.setPrevious(v);
                }

                //set next if it is not set yet and the id is greater than the current one
                if(v.getId() > versionset.getCurrent().getId() && versionset.getNext() == null) {
                    versionset.setNext(v);
                }
            }

            return versionset;
View Full Code Here

    @GET
    @Produces("application/json")
    @Path("/versions/{id:[0-9]+}")
    public Response getVersion(@PathParam("id") Long id) {
        try {
            Version version = versioningService.getVersion(id);

            if(version != null) {
                Map<String,Object> result = new HashMap<String, Object>();
                result.put("id",version.getId());
                if(version.getCreator() != null) {
                    result.put("creator", version.getCreator().stringValue());
                }
                result.put("date",    DateUtils.ISO8601FORMAT.format(version.getCommitTime()));

                result.put("added_triples", JSONUtils.serializeTriplesAsJson(version.getAddedTriples()));
                result.put("removed_triples", JSONUtils.serializeTriplesAsJson(version.getRemovedTriples()));

                return Response.ok().entity(result).build();

            } else {
                return Response.status(Response.Status.NOT_FOUND).entity("version with id "+id+" does not exist").build();
View Full Code Here

TOP

Related Classes of org.apache.marmotta.kiwi.versioning.model.Version

Copyright © 2018 www.massapicom. 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.