📄 itemmapservlet.java
字号:
* itemToAdd.getOwningCollection().getMetadata("name"); * // hook up item, but first, does it belong already? TableRowIterator * tri = DatabaseManager.query(context, "collection2item", "SELECT * collection2item.* FROM collection2item WHERE " + "collection_id=" + * myCollection.getID() + " AND item_id=" + itemToAdd.getID()); * * if(tri.hasNext()) { request.setAttribute("message", "Item is already * part of that collection!"); } else { // Create mapping * myCollection.addItem( itemToAdd ); * // set up a nice 'done' message request.setAttribute("message", * "Item added successfully: <br> " + myTitle + " <br> From Collection: * <br> " + ownerName); * } * * request.setAttribute("collection", myCollection); * // show this page when we're done jspPage = "itemmap-info.jsp"; * // show the page JSPManager.showJSP(request, response, jspPage); } * else { // Display an error } } else if( action.equals("Add Entire * Collection") ) { int targetID = UIUtil.getIntParameter(request, * "collection2import"); * * Collection targetCollection = Collection.find(context, targetID); * // get all items from that collection and add them if not // already * added * // get all items to be added ItemIterator i = * targetCollection.getItems(); Map toAdd = new HashMap(); String * message = ""; * * while( i.hasNext() ) { Item myItem = i.next(); * * toAdd.put(new Integer(myItem.getID()), myItem); } * // now see what we already have, removing dups from the 'toAdd' list * i = myCollection.getItems(); * * while( i.hasNext() ) { Item myItem = i.next(); Integer myKey = new * Integer(myItem.getID()); * // remove works even if key isn't present toAdd.remove(myKey); } * // what's left in toAdd should be added Iterator addKeys = * toAdd.keySet().iterator(); * * while( addKeys.hasNext() ) { Item myItem = * (Item)toAdd.get(addKeys.next()); myCollection.addItem(myItem); * message += " <br> Added item ID: " + myItem.getID(); } * * request.setAttribute("message", message); * request.setAttribute("collection", myCollection); * // show this page when we're done jspPage = "itemmap-info.jsp"; * // show the page JSPManager.showJSP(request, response, jspPage); } */ else if (action.equals("Remove")) { // get item IDs to remove String[] itemIDs = request.getParameterValues("item_ids"); String message = "remove"; LinkedList removedItems = new LinkedList(); for (int j = 0; j < itemIDs.length; j++) { int i = Integer.parseInt(itemIDs[j]); removedItems.add(itemIDs[j]); Item myItem = Item.find(context, i); // make sure item doesn't belong to this collection if (!myItem.isOwningCollection(myCollection)) { myCollection.removeItem(myItem); } } request.setAttribute("message", message); request.setAttribute("collection", myCollection); request.setAttribute("processedItems", removedItems); // show this page when we're done jspPage = "itemmap-info.jsp"; // show the page JSPManager.showJSP(request, response, jspPage); } else if (action.equals("Add")) { // get item IDs to add String[] itemIDs = request.getParameterValues("item_ids"); String message = "added"; LinkedList addedItems = new LinkedList(); if (itemIDs == null) { message = "none-selected"; } else { for (int j = 0; j < itemIDs.length; j++) { int i = Integer.parseInt(itemIDs[j]); Item myItem = Item.find(context, i); if (AuthorizeManager.authorizeActionBoolean(context, myItem, Constants.READ)) { // make sure item doesn't belong to this collection if (!myItem.isOwningCollection(myCollection)) { myCollection.addItem(myItem); addedItems.add(itemIDs[j]); } } } } request.setAttribute("message", message); request.setAttribute("collection", myCollection); request.setAttribute("processedItems", addedItems); // show this page when we're done jspPage = "itemmap-info.jsp"; // show the page JSPManager.showJSP(request, response, jspPage); } else if (action.equals("Search Authors")) { // find all items with a matching author string and not currently in // this collection // sorting by date would be ideal... String myQuery = (String) request.getParameter("namepart"); TableRowIterator tri = DatabaseManager .query( context, "SELECT * from ItemsByAuthor WHERE sort_author like '%" + myQuery.toLowerCase() + "%' AND item_id NOT IN (SELECT item_id FROM collection2item WHERE collection_id=" + myCollection.getID() + ")"); Map items = new HashMap(); while (tri.hasNext()) { TableRow tr = tri.next(); // now instantiate and pass items to 'Add' page int itemID = tr.getIntColumn("item_id"); Item myItem = Item.find(context, itemID); // only put on list if you can read item if (AuthorizeManager.authorizeActionBoolean(context, myItem, Constants.READ)) { items.put(new Integer(itemID), myItem); } } request.setAttribute("collection", myCollection); request.setAttribute("browsetext", myQuery); request.setAttribute("items", items); request.setAttribute("browsetype", new String("Add")); jspPage = "itemmap-browse.jsp"; JSPManager.showJSP(request, response, jspPage); } else if (action.equals("browse")) { // target collection to browse int t = UIUtil.getIntParameter(request, "t"); Collection targetCollection = Collection.find(context, t); // now find all imported items from that collection // seemingly inefficient, but database should have this query cached ItemIterator i = myCollection.getItems(); Map items = new HashMap(); while (i.hasNext()) { Item myItem = i.next(); if (myItem.isOwningCollection(targetCollection)) { Integer myKey = new Integer(myItem.getID()); items.put(myKey, myItem); } } request.setAttribute("collection", myCollection); request.setAttribute("browsetext", targetCollection .getMetadata("name")); request.setAttribute("items", items); request.setAttribute("browsetype", new String("Remove")); // show this page when we're done jspPage = "itemmap-browse.jsp"; // show the page JSPManager.showJSP(request, response, jspPage); } context.complete(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -