Skip to content

Commit

Permalink
Fix sonar warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
osmandin authored and Andrew Woods committed Feb 17, 2015
1 parent 1317ed1 commit d9a596b
Show file tree
Hide file tree
Showing 7 changed files with 219 additions and 177 deletions.
Expand Up @@ -70,59 +70,68 @@ public String apply(final Event ev) {

@Override
public Iterator<FedoraEvent> apply(final Iterator<Event> events) {
return new FedoraEventIterator(events);
}

return new Iterator<FedoraEvent>() {
private class FedoraEventIterator implements Iterator {

// sort JCR events into a Multimap keyed by the node ID involved
final Multimap<String, Event> sortedEvents = index(events, EXTRACT_NODE_ID);
private final Iterator<Event> events;

final Iterator<String> nodeIds = sortedEvents.keySet().iterator();
// sort JCR events into a Multimap keyed by the node ID involved
private final Multimap<String, Event> sortedEvents;

@Override
public boolean hasNext() {
return nodeIds.hasNext();
}
private final Iterator<String> nodeIds;

@Override
public FedoraEvent next() {
final Iterator<Event> nodeSpecificEvents = sortedEvents.get(nodeIds.next()).iterator();
// we can safely call next() immediately on nodeSpecificEvents
// because if
// there was no event at all, there would appear no entry in our
// Multimap under this key
final Event firstEvent = nodeSpecificEvents.next();
final FedoraEvent fedoraEvent = new FedoraEvent(firstEvent);

addProperty(fedoraEvent, firstEvent);
while (nodeSpecificEvents.hasNext()) {
// add the event type and property name to the event we are building up to emit
// we could aggregate other information here if that seems useful
final Event otherEvent = nodeSpecificEvents.next();
fedoraEvent.addType(otherEvent.getType());
addProperty(fedoraEvent, otherEvent);
}
return fedoraEvent;
}
public FedoraEventIterator(final Iterator<Event> events) {
this.events = events;
sortedEvents = index(events, EXTRACT_NODE_ID);
nodeIds = sortedEvents.keySet().iterator();
}

@Override
public void remove() {
// the underlying Multimap is immutable anyway
throw new UnsupportedOperationException();
@Override
public boolean hasNext() {
return nodeIds.hasNext();
}

@Override
public FedoraEvent next() {
final Iterator<Event> nodeSpecificEvents = sortedEvents.get(nodeIds.next()).iterator();
// we can safely call next() immediately on nodeSpecificEvents
// because if
// there was no event at all, there would appear no entry in our
// Multimap under this key
final Event firstEvent = nodeSpecificEvents.next();
final FedoraEvent fedoraEvent = new FedoraEvent(firstEvent);

addProperty(fedoraEvent, firstEvent);
while (nodeSpecificEvents.hasNext()) {
// add the event type and property name to the event we are building up to emit
// we could aggregate other information here if that seems useful
final Event otherEvent = nodeSpecificEvents.next();
fedoraEvent.addType(otherEvent.getType());
addProperty(fedoraEvent, otherEvent);
}
return fedoraEvent;
}

@Override
public void remove() {
// the underlying Multimap is immutable anyway
throw new UnsupportedOperationException();
}

private void addProperty( final FedoraEvent fedoraEvent, final Event ev ) {
try {
if (PROPERTY_EVENT_TYPES.contains(ev.getType())) {
final String eventPath = ev.getPath();
fedoraEvent.addProperty(eventPath.substring(eventPath.lastIndexOf("/") + 1));
} else {
log.trace("Not adding non-event property: {}, {}", fedoraEvent, ev);
}
} catch (final RepositoryException e) {
throw new RepositoryRuntimeException(e);
private void addProperty( final FedoraEvent fedoraEvent, final Event ev ) {
try {
if (PROPERTY_EVENT_TYPES.contains(ev.getType())) {
final String eventPath = ev.getPath();
fedoraEvent.addProperty(eventPath.substring(eventPath.lastIndexOf("/") + 1));
} else {
log.trace("Not adding non-event property: {}, {}", fedoraEvent, ev);
}
} catch (final RepositoryException e) {
throw new RepositoryRuntimeException(e);
}
};
}
}

private final static Logger log = getLogger(AllNodeEventsOneEvent.class);
Expand Down
Expand Up @@ -84,11 +84,8 @@ public Iterator<Triple> apply(final FedoraResource child) {
}
LOGGER.trace("Creating triples for child node: {}", child);
final RdfStream childStream = new RdfStream();

childStream.concat(create(subject(), CONTAINS.asNode(), childSubject));

return childStream;

}
};
}
Expand Down
Expand Up @@ -15,7 +15,6 @@
*/
package org.fcrepo.kernel.impl.rdf.impl;

import static com.google.common.base.Throwables.propagate;
import static com.google.common.collect.ImmutableSet.builder;
import static com.hp.hpl.jena.graph.NodeFactory.createLiteral;
import static com.hp.hpl.jena.graph.NodeFactory.createURI;
Expand All @@ -38,6 +37,7 @@

import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.vocabulary.RDF;
import org.fcrepo.kernel.exception.RepositoryRuntimeException;
import org.fcrepo.kernel.models.FedoraResource;
import org.fcrepo.kernel.identifiers.IdentifierConverter;
import org.fcrepo.kernel.utils.FixityResult;
Expand Down Expand Up @@ -71,48 +71,65 @@ public FixityRdfContext(final FedoraResource resource,
super(resource, idTranslator);

concat(Iterators.concat(Iterators.transform(blobs.iterator(),
new Function<FixityResult, Iterator<Triple>>() {
new FixityResultIteratorFunction(resource, idTranslator, digest, size))));
}

private class FixityResultIteratorFunction implements Function<FixityResult, Iterator<Triple>> {

private final FedoraResource resource;
private final IdentifierConverter<Resource, FedoraResource> idTranslator;
private URI digest;
private final long size;

public FixityResultIteratorFunction(final FedoraResource resource,
final IdentifierConverter<Resource, FedoraResource> idTranslator,
final URI digest, final long size) {
this.resource = resource;
this.idTranslator = idTranslator;
this.digest = digest;
this.size = size;
}

@Override
public Iterator<Triple> apply(final FixityResult blob) {
final com.hp.hpl.jena.graph.Node resultSubject = getTransientFixitySubject();
final ImmutableSet.Builder<Triple> b = builder();
try {
b.add(create(idTranslator.reverse().convert(resource).asNode(),
HAS_FIXITY_RESULT.asNode(), resultSubject));
b.add(create(resultSubject, RDF.type.asNode(), FIXITY_TYPE.asNode()));
final String storeIdentifier = blob.getStoreIdentifier();
final com.hp.hpl.jena.graph.Node contentLocation = createResource(storeIdentifier)
.asNode();

@Override
public Iterator<Triple> apply(final FixityResult blob) {
final com.hp.hpl.jena.graph.Node resultSubject = getTransientFixitySubject();
final ImmutableSet.Builder<Triple> b = builder();
try {
b.add(create(idTranslator.reverse().convert(resource).asNode(),
HAS_FIXITY_RESULT.asNode(), resultSubject));
b.add(create(resultSubject, RDF.type.asNode(), FIXITY_TYPE.asNode()));
final String storeIdentifier = blob.getStoreIdentifier();
final com.hp.hpl.jena.graph.Node contentLocation = createResource(storeIdentifier)
.asNode();
for (final FixityResult.FixityState state : blob.getStatus(size, digest)) {
b.add(create(resultSubject, HAS_FIXITY_STATE
.asNode(), createLiteral(state
.toString())));
}
final String checksum =
blob.getComputedChecksum().toString();
b.add(create(resultSubject, HAS_MESSAGE_DIGEST
.asNode(), createURI(checksum)));
b.add(create(resultSubject, HAS_SIZE.asNode(),
createTypedLiteral(
blob.getComputedSize())
.asNode()));
b.add(create(resultSubject, HAS_CONTENT_LOCATION.asNode(),
contentLocation));
b.add(create(contentLocation,
RDF.type.asNode(),
CONTENT_LOCATION_TYPE.asNode()));
b.add(create(contentLocation,
HAS_CONTENT_LOCATION_VALUE.asNode(),
createLiteral(storeIdentifier)));

for (final FixityResult.FixityState state : blob.getStatus(size, digest)) {
b.add(create(resultSubject, HAS_FIXITY_STATE
.asNode(), createLiteral(state
.toString())));
}
final String checksum =
blob.getComputedChecksum().toString();
b.add(create(resultSubject, HAS_MESSAGE_DIGEST
.asNode(), createURI(checksum)));
b.add(create(resultSubject, HAS_SIZE.asNode(),
createTypedLiteral(
blob.getComputedSize())
.asNode()));
b.add(create(resultSubject, HAS_CONTENT_LOCATION.asNode(),
contentLocation));
b.add(create(contentLocation,
RDF.type.asNode(),
CONTENT_LOCATION_TYPE.asNode()));
b.add(create(contentLocation,
HAS_CONTENT_LOCATION_VALUE.asNode(),
createLiteral(storeIdentifier)));
return b.build().iterator();
} catch (final RepositoryException e) {
throw new RepositoryRuntimeException(e);
}
}

return b.build().iterator();
} catch (final RepositoryException e) {
throw propagate(e);
}
}
})));
}

private com.hp.hpl.jena.graph.Node getTransientFixitySubject() {
Expand Down
Expand Up @@ -147,47 +147,62 @@ private Iterator<Triple> memberRelations(final FedoraResource container) throws

final Iterator<FedoraResource> memberNodes = container.getChildren();

return Iterators.concat(Iterators.transform(memberNodes, new Function<FedoraResource, Iterator<Triple>>() {
@Override
public Iterator<Triple> apply(final FedoraResource child) {
return Iterators.concat(Iterators.transform(memberNodes,
new FedoraResourceTripleFunction(insertedContainerProperty, memberRelation)));
}

try {
final com.hp.hpl.jena.graph.Node childSubject;
if (child instanceof NonRdfSourceDescription) {
childSubject = translator().reverse()
.convert(((NonRdfSourceDescription) child).getDescribedResource())
.asNode();
} else {
childSubject = translator().reverse().convert(child).asNode();
}
private class FedoraResourceTripleFunction implements Function<FedoraResource, Iterator<Triple>> {

if (insertedContainerProperty.equals(MEMBER_SUBJECT.getURI())) {
private final String insertedContainerProperty;

return singletonIterator(create(subject(), memberRelation, childSubject));
}
final String insertedContentProperty = getPropertyNameFromPredicate(resource().getNode(),
createResource(insertedContainerProperty),
null);
private final com.hp.hpl.jena.graph.Node memberRelation;

if (!child.hasProperty(insertedContentProperty)) {
return emptyIterator();
}
public FedoraResourceTripleFunction(final String insertedContainerProperty,
final com.hp.hpl.jena.graph.Node memberRelation) {
this.insertedContainerProperty = insertedContainerProperty;
this.memberRelation = memberRelation;
}

final PropertyValueIterator values
= new PropertyValueIterator(child.getProperty(insertedContentProperty));

return Iterators.transform(values, new Function<Value, Triple>() {
@Override
public Triple apply(final Value input) {
final RDFNode membershipResource = new ValueConverter(session(), translator())
.convert(input);
return create(subject(), memberRelation, membershipResource.asNode());
}
});
} catch (final RepositoryException e) {
throw new RepositoryRuntimeException(e);
@Override
public Iterator<Triple> apply(final FedoraResource child) {

try {
final com.hp.hpl.jena.graph.Node childSubject;
if (child instanceof NonRdfSourceDescription) {
childSubject = translator().reverse()
.convert(((NonRdfSourceDescription) child).getDescribedResource())
.asNode();
} else {
childSubject = translator().reverse().convert(child).asNode();
}

if (insertedContainerProperty.equals(MEMBER_SUBJECT.getURI())) {

return singletonIterator(create(subject(), memberRelation, childSubject));
}
final String insertedContentProperty = getPropertyNameFromPredicate(resource().getNode(),
createResource(insertedContainerProperty),
null);

if (!child.hasProperty(insertedContentProperty)) {
return emptyIterator();
}

final PropertyValueIterator values
= new PropertyValueIterator(child.getProperty(insertedContentProperty));

return Iterators.transform(values, new Function<Value, Triple>() {
@Override
public Triple apply(final Value input) {
final RDFNode membershipResource = new ValueConverter(session(), translator())
.convert(input);
return create(subject(), memberRelation, membershipResource.asNode());
}
});
} catch (final RepositoryException e) {
throw new RepositoryRuntimeException(e);
}
}));
}

}
}
Expand Up @@ -98,16 +98,14 @@ private Function<NodeType, Triple> nodetype2triple() {
@Override
public Triple apply(final NodeType nodeType) {
try {
final String fullTypeName = nodeType.getName();
LOGGER.trace("Translating JCR mixin name: {}", fullTypeName);
final String prefix = fullTypeName.split(":")[0];
final String typeName = fullTypeName.split(":")[1];
final String name = nodeType.getName();
final String prefix = name.split(":")[0];
final String typeName = name.split(":")[1];
final String namespace = getJcrUri(prefix);
LOGGER.trace("with JCR namespace: {}", namespace);
final com.hp.hpl.jena.graph.Node rdfType =
createURI(getRDFNamespaceForJcrNamespace(namespace)
+ typeName);
LOGGER.trace("into RDF resource: {}", rdfType);
LOGGER.trace("Translating mixin: {} w/ namespace: {} into resource: {}", name, namespace, rdfType);
return create(subject(), type.asNode(), rdfType);
} catch (final RepositoryException e) {
throw propagate(e);
Expand Down

0 comments on commit d9a596b

Please sign in to comment.