At OSU, we have very few Dspace collections configured to allow direct submission to the repository. Nearly anyone on campus can submit an item into Dspace, but that item is then vetted through Technical Services where metadata is looked at and corrected before being added to Dspace. To do this, we have ~4 individuals (though primarily 3) that can take a task from the pool for evaluation.
Now those folks that use Dspace know that Dspace places items into the task list in the order that it was received. This means that if a cataloger was responsible for a particular collection, they would have to always look over the entire task list to see if any items from their collections had been submitted. It was a fairly time consuming process and one that constantly soured staff on working within the Dspace interface.
Usually, my level of caring for this problem would be ancillary. Up until August of this year, we had a programmer that handled the majority of the Dspace customizations. I think that my well-known aversion to Java might have had a hand in this — but to be honest I didn’t mind. (Yes, I never was a Java convert. I use it when I have to — but traditionally, I’ve always preferred a more procedural style found in Assembler or C. However, over the past two years, my experience with C# has really softened my stance on Java a bit. I still find some of the syntax non-intuitive). Anyway, in August, I was asked to spend some time working with Dspace since it would allow changes to be incorporated faster since changes could now be made just by knocking on my door.
Anyway, getting back to the task pool. During one of my weekly Digital Production Unit meetings, my staff let me know that this was an issue. What they wanted was the pool, sorted by collection/date. Seemed easy enough — and it was. Now I’ll admit, this is a bit of a quick and dirty hack — but as I look at Dspace, I seem to see a lot of these types of hacks, so mine should fit in. Changes need to be made only to the main.jsp file in the mydspace directory.
Original Code:
lns: 204-212
String row = “even”;
for (int i = 0; i < pooled.length; i++)
{
DCValue[] titleArray = pooled[i].getItem().getDC(“title”, null, Item.ANY); String title = (titleArray.length > 0 ? titleArray[0].value : LocaleSupport.getLocalizedMessag(pageContext,”jsp.general.untitled”) );
EPerson submitter = pooled[i].getItem().getSubmitter();
Modified:
String[] tcoll = new String[pooled.length];
for (int i = 0; i < pooled.length; i++) {
tcoll[i] = pooled[i].getCollection().getMetadata(“name”) + “_” + String.valueOf(i);
}
Arrays.sort(tcoll);
for (int z = 0; z < tcoll.length; z++)
{
int i = Integer.parseInt(tcoll[z].substring(tcoll[z].lastIndexOf(“_”)+1));
As folks can see, basically, the modification reads the collection name of each item in the task book and stores the data in an array as: [collection name]_number. The number stored is the position that the item occurs in the list. Once the new array is setup, its sorted and then it is this array, not the pooled array, that is used to step through the tasks. The index number for accessing items in the pool array is pulled by processing the position number from the collection array.
We’ve been using this for ~2 1/2 weeks now, and the staff are much happier.
Now that I’m working on Dspace, I may periodically post changes that we are making to the application if I find them interesting. Whether anyone else will, well, we’ll see.
–TR
Comments
One response to “Shifting through the chaos (myDspace pooled tasks)”
Yes, for heaven’s sake! I love a good DSpace hack.