Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
h5. Add properties to an already existing Replicable entity

...


You have 2 posibilities.

...


* Make use of the {{public Map<String, Object> getMongoProperties(String domain)}}. Use this method if the properties you add are not common to multiple entities. If this is the case ...

...


* Add the properties in a DataSet. You can create a separate one or make use of an already existing one.

...

 
Examples are all over the place. For instance, take a look at _OpenAcdAgent_. It has a bunch of "proprietary" properties and also some common with other OpenACD objects, written in the OpenACD DataSet.

h5.

...

 Make an entity Replicable

...


* you must make sure the entity implements _Replicable_ interface. Implement all methods with relevant info.

...


* make sure the replication is triggered when saving and deleting. One thing to take into account is that the replication is not triggered if the save method is called something other than *saveObject(Object)* (replace Object with any name), because only the methods with that name are intercepted. (Similar with delete.) Another option is to publish an event, but the recommended way is the interceptor way.

...


* make sure the entities are retrieved by an _ReplicableProvider_. The recommended way to do that is to create a separate ReplicableProvider implementation to implement the _getReplicables_ method.

h5. Mongo CLI
There are a bunch of useful commands to use from Mongo CLI (accessible by typing mongo in your favorite terminal).
* {{show dbs}}
prints out all databases.
* {{show collections}}
prints out all collections in a database (you'll need to {{use a_particular_database}} first).
* {{db.entity.find()}}
this will print out all documents in entity collection. Not very useful if there are many as it prints out just a few (you'll notice "has more" at the end).
* {{db.entity.find(\{_id : /User/\})}}
regular expression finder. Expression between / and / is a regular expression, use your imagination to narrow your search.
* db.entity.find(\{type:"openacdskill", name:"German"\})
narrow the search by applying multiple "filters".
* {{db.entity.drop()}}
drop the entire entity collection.
* {{db.entity.find(\{uid:"200"\})}}
find a particular user document. User names are held in the _uid_ field.
* {{db.entity.find(\{uid:"200"\}).forEach(function (d) \{printjson(d)\})}}
prints out a formatted version of the document. Pretty useful when looking at a single document. You can also use: {{db.entity.find(\{uid:"200"\}).forEach(function (d) \{printjson(*d.prm*)\})}} to see a formatted version of the prm field (permissions).
* {{db.entity.find(\{uid:"200"\}).forEach(function (d) {print("_id: "+d._id+"; perms: "+d.prm)});}}
print out just a few fields from a particular document

More: [http://mongodb.onconfluence.com/display/DOCS/Advanced+Queries]