Refactored abstract mongo manager
This commit is contained in:
parent
b827ba2f13
commit
db82bc0a53
|
@ -46,25 +46,27 @@ public class ConcessioniMongoManager extends MongoManager{
|
|||
|
||||
public ConcessioniMongoManager() throws ConfigurationException {
|
||||
super();
|
||||
init(collectionName);
|
||||
|
||||
}
|
||||
private static final String collectionName="legacyConcessioni";
|
||||
//private static final String DB_NAME="gna_dev";
|
||||
|
||||
|
||||
private MongoDatabase db=null;
|
||||
|
||||
@Override
|
||||
@Synchronized
|
||||
protected MongoDatabase getDatabase() {
|
||||
if(db==null) {
|
||||
String toUseDB=super.client.getConnection().getDatabase();
|
||||
log.info("Connecting to DB {} ",toUseDB);
|
||||
|
||||
// TODO MAP OF DATABASES?
|
||||
db=client.getTheClient().getDatabase(toUseDB);
|
||||
}
|
||||
return db;
|
||||
}
|
||||
//
|
||||
// private MongoDatabase db=null;
|
||||
//
|
||||
// @Override
|
||||
// @Synchronized
|
||||
// protected MongoDatabase getDatabase() {
|
||||
// if(db==null) {
|
||||
// String toUseDB=super.client.getConnection().getDatabase();
|
||||
// log.info("Connecting to DB {} ",toUseDB);
|
||||
//
|
||||
// // TODO MAP OF DATABASES?
|
||||
// db=client.getTheClient().getDatabase(toUseDB);
|
||||
// }
|
||||
// return db;
|
||||
// }
|
||||
|
||||
protected static Document asDocument (Concessione c) throws JsonProcessingException {
|
||||
Document toReturn=Document.parse(Serialization.write(c));
|
||||
|
@ -92,14 +94,14 @@ public class ConcessioniMongoManager extends MongoManager{
|
|||
log.trace("Going to register {} ",toRegister);
|
||||
toRegister=onUpdate(toRegister);
|
||||
log.trace("Concessione with defaults is {}",toRegister);
|
||||
ObjectId id=insert(asDocument(toRegister), collectionName);
|
||||
ObjectId id=insertDoc(asDocument(toRegister));
|
||||
|
||||
log.trace("Obtained id {}",id);
|
||||
Concessione toReturn=asConcessione(getById(id,collectionName));
|
||||
Concessione toReturn=asConcessione(getDocById(id));
|
||||
toReturn.setMongo_id(asString(id));
|
||||
|
||||
|
||||
toReturn = asConcessione(replace(asDocument(toReturn),id,collectionName));
|
||||
toReturn = asConcessione(replaceDoc(asDocument(toReturn),id));
|
||||
log.debug("Registered {} ",toReturn);
|
||||
return toReturn;
|
||||
}
|
||||
|
@ -107,22 +109,13 @@ public class ConcessioniMongoManager extends MongoManager{
|
|||
public Concessione replace(Concessione toRegister) throws IOException {
|
||||
log.trace("Replacing {} ",toRegister);
|
||||
toRegister=onUpdate(toRegister);
|
||||
return asConcessione(replace(asDocument(toRegister),new ObjectId(toRegister.getMongo_id()),collectionName));
|
||||
return asConcessione(replaceDoc(asDocument(toRegister),new ObjectId(toRegister.getMongo_id())));
|
||||
}
|
||||
|
||||
/* public Concessione update(String id,String json) throws IOException {
|
||||
log.trace("Updating id {} with {} ",id,json);
|
||||
Concessione toReturn=asConcessione(update(asId(id),asDoc(json),collectionName));
|
||||
log.debug("Refreshing defaults..");
|
||||
toReturn.setDefaults();
|
||||
return asConcessione(replace(asDocument(toReturn),collectionName));
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
public Iterable<Concessione> list(){
|
||||
LinkedBlockingQueue queue=new LinkedBlockingQueue<Concessione>();
|
||||
iterate(null,null, collectionName).forEach(
|
||||
iterateDoc(null,null).forEach(
|
||||
new Consumer<Document>() {
|
||||
@Override
|
||||
public void accept(Document d) {
|
||||
|
@ -140,7 +133,7 @@ public class ConcessioniMongoManager extends MongoManager{
|
|||
public Iterable<Concessione> search(Document filter){
|
||||
log.info("Searching concessione for filter {} ",filter);
|
||||
LinkedBlockingQueue queue=new LinkedBlockingQueue<Concessione>();
|
||||
iterate(filter,null,collectionName).forEach(
|
||||
iterateDoc(filter,null).forEach(
|
||||
(Consumer<? super Document>) (Document d)->{try{
|
||||
queue.put(asConcessione(d));
|
||||
}catch(Throwable t){log.warn("Unable to translate "+d);}});
|
||||
|
@ -151,7 +144,7 @@ public class ConcessioniMongoManager extends MongoManager{
|
|||
public Iterable<Document> query(QueryRequest queryRequest){
|
||||
log.info("Searching concessione for filter {} ",queryRequest);
|
||||
LinkedBlockingQueue queue=new LinkedBlockingQueue<Concessione>();
|
||||
query(queryRequest,collectionName).forEach(
|
||||
queryDoc(queryRequest).forEach(
|
||||
(Consumer<? super Document>) (Document d)->{try{
|
||||
queue.put(d);
|
||||
}catch(Throwable t){log.warn("Unable to translate "+d);}});
|
||||
|
@ -161,7 +154,7 @@ public class ConcessioniMongoManager extends MongoManager{
|
|||
|
||||
public Concessione getById(String id)throws IOException {
|
||||
log.debug("Loading by ID "+id);
|
||||
return asConcessione(getById(asId(id),collectionName));
|
||||
return asConcessione(getDocById(asId(id)));
|
||||
}
|
||||
|
||||
public void deleteById(String id,boolean force) throws DeletionException {
|
||||
|
@ -180,12 +173,12 @@ public class ConcessioniMongoManager extends MongoManager{
|
|||
if (!concessione.getReport().getStatus().equals(ValidationStatus.PASSED)&&!force)
|
||||
throw new DeletionException("Unable to clean "+concessione.getMongo_id());
|
||||
|
||||
delete(asId(id), collectionName);
|
||||
deleteDoc(asId(id));
|
||||
}catch(DeletionException e) {
|
||||
//storing updated - partially deleted
|
||||
log.error("Error while trying to delete",e);
|
||||
concessione=onUpdate(concessione);
|
||||
replace(asDocument(concessione),new ObjectId(concessione.getMongo_id()), collectionName);
|
||||
replaceDoc(asDocument(concessione),new ObjectId(concessione.getMongo_id()));
|
||||
throw e;
|
||||
}
|
||||
}catch(Throwable t){
|
||||
|
@ -198,21 +191,21 @@ public class ConcessioniMongoManager extends MongoManager{
|
|||
|
||||
public Concessione unpublish(String id) throws DeletionException {
|
||||
try{
|
||||
Concessione toReturn=asConcessione(getById(asId(id),collectionName));
|
||||
Concessione toReturn=asConcessione(getDocById(asId(id)));
|
||||
removeFromIndex(toReturn);
|
||||
log.debug("Removed from centroids "+toReturn.getMongo_id());
|
||||
toReturn = unpublish(toReturn);
|
||||
log.debug("Concessione after unpublishing is "+toReturn);
|
||||
toReturn = onUpdate(toReturn);
|
||||
|
||||
return asConcessione(replace(asDocument(toReturn),new ObjectId(toReturn.getMongo_id()),collectionName));
|
||||
return asConcessione(replaceDoc(asDocument(toReturn),new ObjectId(toReturn.getMongo_id())));
|
||||
}catch(Throwable t){
|
||||
throw new DeletionException("Unable to unpublish "+id,t);
|
||||
}
|
||||
}
|
||||
|
||||
public Concessione publish(String id) throws IOException{
|
||||
Concessione toReturn=asConcessione(getById(asId(id),collectionName));
|
||||
Concessione toReturn=asConcessione(getDocById(asId(id)));
|
||||
toReturn=onUpdate(toReturn);
|
||||
toReturn.validate();
|
||||
|
||||
|
@ -224,7 +217,7 @@ public class ConcessioniMongoManager extends MongoManager{
|
|||
toReturn=index(toReturn);
|
||||
// replace(asDocument(toReturn),collectionName);
|
||||
|
||||
return asConcessione(replace(asDocument(toReturn),new ObjectId(toReturn.getMongo_id()),collectionName));
|
||||
return asConcessione(replaceDoc(asDocument(toReturn),new ObjectId(toReturn.getMongo_id())));
|
||||
}
|
||||
|
||||
|
||||
|
@ -247,7 +240,7 @@ public class ConcessioniMongoManager extends MongoManager{
|
|||
toClearContent.getActualContent().clear();
|
||||
|
||||
c=onUpdate(c);
|
||||
return asConcessione(replace(asDocument(c),new ObjectId(c.getMongo_id()),collectionName));
|
||||
return asConcessione(replaceDoc(asDocument(c),new ObjectId(c.getMongo_id())));
|
||||
|
||||
}catch(Exception e) {
|
||||
throw new Exception("Unable to unregister files.",e);
|
||||
|
@ -277,7 +270,7 @@ public class ConcessioniMongoManager extends MongoManager{
|
|||
store(section,files,ws,storage,baseFolder);
|
||||
|
||||
c=onUpdate(c);
|
||||
return asConcessione(replace(asDocument(c),new ObjectId(c.getMongo_id()),collectionName));
|
||||
return asConcessione(replaceDoc(asDocument(c),new ObjectId(c.getMongo_id())));
|
||||
}catch(Exception e) {
|
||||
throw new Exception("Unable to save file.",e);
|
||||
}
|
||||
|
|
|
@ -15,6 +15,8 @@ import org.gcube.application.cms.implementations.ImplementationProvider;
|
|||
import org.gcube.application.geoportal.service.model.internal.db.Mongo;
|
||||
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||
|
||||
import javax.print.Doc;
|
||||
|
||||
import static com.mongodb.client.model.Filters.eq;
|
||||
import static com.mongodb.client.model.Sorts.ascending;
|
||||
import static com.mongodb.client.model.Sorts.descending;
|
||||
|
@ -24,7 +26,9 @@ public abstract class MongoManager {
|
|||
|
||||
|
||||
protected Mongo client=null;
|
||||
|
||||
|
||||
protected MongoCollection<Document> collection=null;
|
||||
|
||||
protected static final String ID="_id";
|
||||
|
||||
protected static final ObjectId asId(String id) {return new ObjectId(id);}
|
||||
|
@ -35,72 +39,62 @@ public abstract class MongoManager {
|
|||
|
||||
public MongoManager() throws ConfigurationException {
|
||||
client=ImplementationProvider.get().getEngineByManagedClass(Mongo.class);
|
||||
|
||||
log.info("Got Mongo Client at "+client.getConnection());
|
||||
log.debug("Mongo client is "+client);
|
||||
log.debug("Cached client is {} ",client);
|
||||
}
|
||||
|
||||
protected void init(String collectionName){
|
||||
String toUseDB=client.getConnection().getDatabase();
|
||||
log.info("Opening collection {} : {} ",toUseDB);
|
||||
collection=client.getTheClient().getDatabase(toUseDB).getCollection(collectionName);
|
||||
}
|
||||
|
||||
// TODO check if existing DB
|
||||
protected abstract MongoDatabase getDatabase();
|
||||
|
||||
MongoCollection getCollection(){
|
||||
return collection;
|
||||
}
|
||||
|
||||
protected abstract String mongoIDFieldName();
|
||||
|
||||
//*********** PROJECTS
|
||||
// NB BsonId
|
||||
protected ObjectId insert(Document proj, String collectionName) {
|
||||
MongoDatabase database=getDatabase();
|
||||
MongoCollection<Document> collection = database.getCollection(collectionName);
|
||||
|
||||
protected ObjectId insertDoc(Document proj) {
|
||||
MongoCollection<Document> collection = getCollection();
|
||||
// Check if _id is present
|
||||
ObjectId id=proj.getObjectId(mongoIDFieldName());
|
||||
if(id==null) {
|
||||
proj.append(mongoIDFieldName(), new ObjectId());
|
||||
id=proj.getObjectId(mongoIDFieldName());
|
||||
}
|
||||
|
||||
|
||||
collection.insertOne(Document.parse(proj.toJson()));
|
||||
collection.insertOne(Document.parse(proj.toJson()));
|
||||
return id;
|
||||
}
|
||||
|
||||
public void delete(ObjectId id, String collectionName) {
|
||||
MongoDatabase database=getDatabase();
|
||||
MongoCollection<Document> collection = database.getCollection(collectionName);
|
||||
public void deleteDoc(ObjectId id) {
|
||||
MongoCollection<Document> collection = getCollection();
|
||||
collection.deleteOne(eq(mongoIDFieldName(),id));
|
||||
}
|
||||
|
||||
|
||||
|
||||
public Document getById(ObjectId id,String collectionName) {
|
||||
MongoDatabase database=getDatabase();
|
||||
MongoCollection<Document> coll=database.getCollection(collectionName);
|
||||
public Document getDocById(ObjectId id) {
|
||||
MongoCollection<Document> coll=getCollection();
|
||||
return coll.find(new Document(mongoIDFieldName(),id)).first();
|
||||
}
|
||||
|
||||
|
||||
public FindIterable<Document> iterate(Document filter, Document projection, String collectionName) {
|
||||
log.debug("Iterate over {} ",collectionName);
|
||||
MongoDatabase database=getDatabase();
|
||||
MongoCollection<Document> coll=database.getCollection(collectionName);
|
||||
|
||||
public FindIterable<Document> iterateDoc(Document filter, Document projection) {
|
||||
MongoCollection<Document> coll=getCollection();
|
||||
if(filter == null) filter=new Document();
|
||||
|
||||
log.debug("Applying Filter "+filter.toJson());
|
||||
|
||||
|
||||
if(projection != null ) {
|
||||
log.debug("Applying projection "+projection.toJson());
|
||||
return coll.find(filter).projection(projection);
|
||||
}else return coll.find(filter);
|
||||
|
||||
}
|
||||
|
||||
public FindIterable<Document> query(QueryRequest request, String collectionName){
|
||||
|
||||
FindIterable<Document> toReturn=iterate(request.getFilter(), request.getProjection(),collectionName);
|
||||
|
||||
public FindIterable<Document> queryDoc(QueryRequest request){
|
||||
|
||||
FindIterable<Document> toReturn=iterateDoc(request.getFilter(), request.getProjection());
|
||||
|
||||
if(request.getOrdering()!=null){
|
||||
if(request.getOrdering().getDirection().equals(QueryRequest.OrderedRequest.Direction.ASCENDING))
|
||||
|
@ -117,34 +111,29 @@ public abstract class MongoManager {
|
|||
return toReturn;
|
||||
}
|
||||
|
||||
|
||||
public <T> FindIterable<T> iterateForClass(Document filter,String collectionName,Class<T> clazz) {
|
||||
MongoDatabase database=getDatabase();
|
||||
MongoCollection<Document> coll=database.getCollection(collectionName);
|
||||
if(filter==null)
|
||||
return coll.find(clazz);
|
||||
else
|
||||
return coll.find(filter,clazz);
|
||||
}
|
||||
|
||||
public Document replace(Document toUpdate,ObjectId id, String collectionName) {
|
||||
MongoDatabase database=getDatabase();
|
||||
MongoCollection<Document> coll=database.getCollection(collectionName);
|
||||
//
|
||||
// public <T> FindIterable<T> iterateForClass(Document filter,Class<T> clazz) {
|
||||
// MongoCollection<Document> coll=getCollection();
|
||||
// if(filter==null)
|
||||
// return coll.find(clazz);
|
||||
// else
|
||||
// return coll.find(filter,clazz);
|
||||
// }
|
||||
//
|
||||
public Document replaceDoc(Document toUpdate,ObjectId id) {
|
||||
MongoCollection<Document> coll=getCollection();
|
||||
return coll.findOneAndReplace(
|
||||
eq(mongoIDFieldName(),id), toUpdate,new FindOneAndReplaceOptions().returnDocument(ReturnDocument.AFTER));
|
||||
|
||||
}
|
||||
|
||||
public Document update(ObjectId id, Document updateSet, String collectionName) {
|
||||
MongoDatabase database=getDatabase();
|
||||
MongoCollection<Document> coll=database.getCollection(collectionName);
|
||||
public Document updateDoc(ObjectId id, Document updateSet) {
|
||||
MongoCollection<Document> coll=getCollection();
|
||||
return coll.findOneAndUpdate(
|
||||
eq(mongoIDFieldName(),id),
|
||||
updateSet,
|
||||
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER));
|
||||
}
|
||||
|
||||
//********** PROFILES
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
|||
|
||||
@Getter
|
||||
UseCaseDescriptor useCaseDescriptor;
|
||||
MongoDatabase db=null;
|
||||
|
||||
|
||||
@Override
|
||||
protected String mongoIDFieldName() {
|
||||
|
@ -85,11 +85,13 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
|||
|
||||
|
||||
// Connect to DB
|
||||
String toUseDB=super.client.getConnection().getDatabase();
|
||||
log.info("Connecting to DB {} ",toUseDB);
|
||||
init(getToUseCollectionName());
|
||||
|
||||
}
|
||||
|
||||
db=client.getTheClient().getDatabase(toUseDB);
|
||||
private String getToUseCollectionName(){
|
||||
//TODO collection name in UCD
|
||||
return useCaseDescriptor.getId();
|
||||
}
|
||||
|
||||
@Getter(lazy = true)
|
||||
|
@ -118,16 +120,6 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
|||
}
|
||||
}
|
||||
|
||||
private String getCollectionName(){
|
||||
// TODO UseCaseDescriptor can directly specify, use ID only as default
|
||||
|
||||
return useCaseDescriptor.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public MongoDatabase getDatabase(){
|
||||
return db;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Project registerNew(Document toRegisterDoc) throws IOException, StepException, EventException {
|
||||
|
@ -165,7 +157,7 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
|||
log.debug("Going to register {} ",toRegister);
|
||||
|
||||
// Insert object
|
||||
ObjectId id =insert(asDocumentWithId(toRegister),getCollectionName());
|
||||
ObjectId id =insertDoc(asDocumentWithId(toRegister));
|
||||
|
||||
log.info("Obtained id {} ",id);
|
||||
return getByID(id.toHexString());
|
||||
|
@ -179,7 +171,7 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
|||
toUpdate.getLifecycleInformation().cleanState();
|
||||
|
||||
toUpdate=onUpdate(toUpdate);
|
||||
Project toReturn =convert(replace(asDocumentWithId(toUpdate),new ObjectId(id),getCollectionName()), Project.class);
|
||||
Project toReturn =convert(replaceDoc(asDocumentWithId(toUpdate),new ObjectId(id)), Project.class);
|
||||
log.debug("Updated Project is {}",toReturn);
|
||||
return toReturn;
|
||||
}
|
||||
|
@ -224,7 +216,7 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
|||
|
||||
@Override
|
||||
public Project getByID(String id) throws WebApplicationException{
|
||||
Document doc=super.getById(asId(id),getCollectionName());
|
||||
Document doc=getDocById(asId(id));
|
||||
if(doc==null) throw new WebApplicationException("No document with ID "+id);
|
||||
return convert(doc, Project.class);
|
||||
}
|
||||
|
@ -233,7 +225,7 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
|||
public Iterable<Document> query(QueryRequest queryRequest) {
|
||||
log.info("Querying {} ",queryRequest);
|
||||
LinkedBlockingQueue queue=new LinkedBlockingQueue<Project>();
|
||||
query(queryRequest,getCollectionName()).forEach(
|
||||
queryDoc(queryRequest).forEach(
|
||||
(Consumer<? super Document>) (Document d)->{try{
|
||||
queue.put(d);
|
||||
}catch(Throwable t){log.warn("Unable to translate "+d);}});
|
||||
|
@ -245,7 +237,7 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
|||
public Iterable<Project> filter(QueryRequest queryRequest) {
|
||||
log.info("Searching concessione for filter {} ",queryRequest);
|
||||
LinkedBlockingQueue queue=new LinkedBlockingQueue<Project>();
|
||||
query(queryRequest,getCollectionName()).forEach(
|
||||
queryDoc(queryRequest).forEach(
|
||||
(Consumer<? super Document>) (Document d)->{try{
|
||||
queue.put(d);
|
||||
}catch(Throwable t){log.warn("Unable to translate "+d);}});
|
||||
|
@ -273,7 +265,7 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
|||
step,document.getLifecycleInformation().getLastOperationStatus());
|
||||
log.debug("LifecycleInformation is {} ",document.getLifecycleInformation());
|
||||
if(log.isTraceEnabled())log.trace("Document is {} ",Serialization.write(document));
|
||||
return convert(replace(asDocumentWithId(document),new ObjectId(id),getCollectionName()), Project.class);
|
||||
return convert(replaceDoc(asDocumentWithId(document),new ObjectId(id)), Project.class);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -366,7 +358,7 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
|||
|
||||
doc=onUpdate(doc);
|
||||
|
||||
return convert(replace(asDocumentWithId(doc),new ObjectId(id),getCollectionName()), Project.class);
|
||||
return convert(replaceDoc(asDocumentWithId(doc),new ObjectId(id)), Project.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -388,7 +380,7 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
|||
log.debug("Removing FS from document [ID : ] by path {}",id,path);
|
||||
wrapper.setElement(path,null);
|
||||
doc=onUpdate(doc);
|
||||
return convert(replace(asDocumentWithId(doc),new ObjectId(id),getCollectionName()), Project.class);
|
||||
return convert(replaceDoc(asDocumentWithId(doc),new ObjectId(id)), Project.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -405,9 +397,9 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
|||
|
||||
// Add Mongo Info
|
||||
Archive mongoArchive = new Archive("DOCUMENT-STORE-COLLECTION");
|
||||
MongoCollection coll=getDatabase().getCollection(getCollectionName());
|
||||
MongoCollection coll=getCollection();
|
||||
mongoArchive.put("count",coll.count());
|
||||
mongoArchive.put("collection_name",getCollectionName());
|
||||
mongoArchive.put("collection_name",getToUseCollectionName());
|
||||
archives.add(mongoArchive);
|
||||
|
||||
// Set WS Info
|
||||
|
|
|
@ -2,6 +2,7 @@ package org.gcube.application.geoportal.service.engine.mongo;
|
|||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.mongodb.client.FindIterable;
|
||||
import com.mongodb.client.MongoCollection;
|
||||
import com.mongodb.client.MongoDatabase;
|
||||
import com.mongodb.client.model.FindOneAndReplaceOptions;
|
||||
import com.mongodb.client.model.ReturnDocument;
|
||||
|
@ -30,19 +31,8 @@ import java.util.function.Consumer;
|
|||
public class UCDMongoManager extends MongoManager implements UCDManagerI{
|
||||
|
||||
|
||||
MongoDatabase db=null;
|
||||
|
||||
public UCDMongoManager() throws ConfigurationException {
|
||||
String toUseDB=super.client.getConnection().getDatabase();
|
||||
log.info("Connecting to DB {} ",toUseDB);
|
||||
|
||||
|
||||
db=client.getTheClient().getDatabase(toUseDB);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MongoDatabase getDatabase(){
|
||||
return db;
|
||||
init("UCD_"+ContextUtils.getCurrentScope().replaceAll("/","_"));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -50,11 +40,6 @@ public class UCDMongoManager extends MongoManager implements UCDManagerI{
|
|||
return UseCaseDescriptor.MONGO_ID;
|
||||
}
|
||||
|
||||
private String getCollectionName(){
|
||||
return "profiles_"+ContextUtils.getCurrentScope();
|
||||
}
|
||||
|
||||
|
||||
public UseCaseDescriptor insert(UseCaseDescriptor desc) throws RegistrationException {
|
||||
try {
|
||||
if (desc.getMongoId() != null)
|
||||
|
@ -62,9 +47,9 @@ public class UCDMongoManager extends MongoManager implements UCDManagerI{
|
|||
|
||||
//TODO validate
|
||||
|
||||
ObjectId id = super.insert(Serialization.asDocument(desc), mongoCollectionName());
|
||||
ObjectId id = insertDoc(Serialization.asDocument(desc));
|
||||
desc.setMongoId(id);
|
||||
return Serialization.convert(super.getById(id, mongoCollectionName()), UseCaseDescriptor.class);
|
||||
return Serialization.convert(getDocById(id), UseCaseDescriptor.class);
|
||||
}catch(JsonProcessingException e){
|
||||
log.error("Unexpected serialization exception ",e);
|
||||
throw new WebApplicationException("Unexpected exception ",e);
|
||||
|
@ -80,7 +65,7 @@ public class UCDMongoManager extends MongoManager implements UCDManagerI{
|
|||
// MONGO ID SHOULD MATCH IF PROVIDED
|
||||
filter.put(UseCaseDescriptor.MONGO_ID,desc.getMongoId());
|
||||
try {
|
||||
UseCaseDescriptor toReturn = Serialization.convert(getDatabase().getCollection(mongoCollectionName()).findOneAndReplace(
|
||||
UseCaseDescriptor toReturn = Serialization.convert(getCollection().findOneAndReplace(
|
||||
filter, Serialization.asDocument(desc),
|
||||
new FindOneAndReplaceOptions().returnDocument(ReturnDocument.BEFORE)), UseCaseDescriptor.class);
|
||||
log.trace("Matching is {} ", toReturn);
|
||||
|
@ -103,24 +88,17 @@ public class UCDMongoManager extends MongoManager implements UCDManagerI{
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private String mongoCollectionName(){
|
||||
return "_UCD"+ ContextUtils.getCurrentScope().replaceAll("/","_");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public Iterable<UseCaseDescriptor> query(QueryRequest queryRequest) {
|
||||
|
||||
log.info("Searching UCD for {} ",queryRequest);
|
||||
LinkedBlockingQueue queue=new LinkedBlockingQueue<UseCaseDescriptor>();
|
||||
|
||||
query(queryRequest,getCollectionName()).forEach(
|
||||
FindIterable<Document> it=queryDoc(queryRequest);
|
||||
it.forEach(
|
||||
(Consumer<? super Document>) d ->{try{
|
||||
queue.put(Serialization.convert(d,UseCaseDescriptor.class));
|
||||
}catch(Throwable t){log.warn("Unable to translate "+d);}});
|
||||
}catch(Throwable t){log.warn("Unable to translate "+d,t);}});
|
||||
|
||||
log.info("Returned {} elements ",queue.size());
|
||||
return queue;
|
||||
|
@ -128,7 +106,7 @@ public class UCDMongoManager extends MongoManager implements UCDManagerI{
|
|||
|
||||
@Override
|
||||
public void deleteById(String id, boolean force) throws ConfigurationException {
|
||||
delete(getById(id).getMongoId(),mongoCollectionName());
|
||||
deleteDoc(getById(id).getMongoId());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ import javax.ws.rs.core.MediaType;
|
|||
import java.util.Iterator;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import static junit.framework.TestCase.assertTrue;
|
||||
import static org.junit.Assume.assumeTrue;
|
||||
|
||||
@Slf4j
|
||||
|
@ -51,6 +52,6 @@ public class UCDTests extends BasicServiceTestUnit{
|
|||
QueryRequest request=new QueryRequest();
|
||||
AtomicLong l = new AtomicLong();
|
||||
query(request).forEachRemaining(u->l.incrementAndGet());
|
||||
assumeTrue(l.get()>0);
|
||||
assertTrue(l.get()>0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package org.gcube.application.geoportal.service;
|
||||
package org.gcube.application.geoportal.service.engine.mongo;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.mongodb.Block;
|
||||
|
@ -25,15 +25,7 @@ public class MongoTests {
|
|||
public static class MongoTester extends MongoManager {
|
||||
|
||||
public MongoTester() throws ConfigurationException {
|
||||
}
|
||||
|
||||
|
||||
|
||||
public MongoCollection<Document> getCollection(){return getDatabase().getCollection("legacyConcessioni");}
|
||||
|
||||
@Override
|
||||
protected MongoDatabase getDatabase() {
|
||||
return client.getTheClient().getDatabase("gna_dev");
|
||||
init("legacyConcessioni");
|
||||
}
|
||||
|
||||
@Override
|
|
@ -18,6 +18,7 @@ import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
|
|||
import org.gcube.application.geoportal.service.BasicServiceTestUnit;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
import javax.ws.rs.client.Entity;
|
||||
|
@ -40,9 +41,10 @@ public abstract class AbstractProfiledDocumentsTests extends BasicServiceTestUni
|
|||
}
|
||||
|
||||
|
||||
protected abstract WebTarget baseTarget();
|
||||
|
||||
|
||||
protected abstract WebTarget baseTarget();
|
||||
|
||||
|
||||
@Test
|
||||
public void getAll() {
|
||||
|
@ -66,9 +68,10 @@ public abstract class AbstractProfiledDocumentsTests extends BasicServiceTestUni
|
|||
}
|
||||
|
||||
@Test
|
||||
public void getConfiguration() {
|
||||
public void getConfiguration() throws Exception {
|
||||
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
|
||||
System.out.println(baseTarget().path(InterfaceConstants.Methods.CONFIGURATION_PATH).request(MediaType.APPLICATION_JSON).get(Configuration.class));
|
||||
System.out.println(check(
|
||||
baseTarget().path(InterfaceConstants.Methods.CONFIGURATION_PATH).request(MediaType.APPLICATION_JSON).get(),Configuration.class));
|
||||
}
|
||||
|
||||
// Queries
|
||||
|
|
|
@ -2,6 +2,7 @@ package org.gcube.application.geoportal.service.profiledDocuments;
|
|||
|
||||
import org.bson.Document;
|
||||
import org.gcube.application.cms.serialization.Serialization;
|
||||
import org.gcube.application.cms.tests.TokenSetter;
|
||||
import org.gcube.application.geoportal.common.model.JSONPathWrapper;
|
||||
import org.gcube.application.geoportal.common.model.document.Project;
|
||||
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFileSet;
|
||||
|
@ -9,8 +10,10 @@ import org.gcube.application.geoportal.common.model.useCaseDescriptor.Field;
|
|||
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
||||
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
||||
import org.gcube.application.geoportal.common.utils.StorageUtils;
|
||||
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
|
||||
import org.gcube.application.geoportal.service.BasicServiceTestUnit;
|
||||
import org.junit.Assert;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
import javax.ws.rs.client.Entity;
|
||||
|
@ -18,6 +21,7 @@ import javax.ws.rs.client.WebTarget;
|
|||
import javax.ws.rs.core.MediaType;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assume.assumeTrue;
|
||||
|
||||
public class DummyProjectTest extends AbstractProfiledDocumentsTests{
|
||||
|
||||
|
@ -28,6 +32,9 @@ public class DummyProjectTest extends AbstractProfiledDocumentsTests{
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void registerNew() throws Exception {
|
||||
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"profile_id": "profiledConcessioni",
|
||||
"context": "/gcube/devsec/devVRE",
|
||||
"last_updated_time": "2022-03-11T15:53:41.099",
|
||||
"indexes": null,
|
||||
"archives":
|
||||
[
|
||||
{
|
||||
"_type": "DOCUMENT-STORE-COLLECTION",
|
||||
"count": 41,
|
||||
"collection_name": "profiledConcessioni"
|
||||
},
|
||||
{
|
||||
"_type": "W-STORAGE",
|
||||
"folder_id": "2a688014-cf98-464d-aa7c-38f1667f5542"
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue