package org.openedit.entermedia.modules; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Collection; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.entermedia.email.PostMail; import org.entermedia.email.TemplateWebEmail; import org.openedit.Data; import org.openedit.data.BaseData; import org.openedit.data.PropertyDetail; import org.openedit.data.Searcher; import org.openedit.entermedia.Asset; import org.openedit.entermedia.MediaArchive; import org.openedit.entermedia.orders.Order; import org.openedit.entermedia.orders.OrderHistory; import org.openedit.entermedia.orders.OrderManager; import org.openedit.util.DateStorageUtil; import com.openedit.OpenEditException; import com.openedit.WebPageRequest; import com.openedit.hittracker.HitTracker; import com.openedit.hittracker.ListHitTracker; import com.openedit.hittracker.SearchQuery; import com.openedit.page.Page; import com.openedit.users.User; public class OrderModule extends BaseMediaModule { private static final Log log = LogFactory.getLog(OrderModule.class); protected OrderManager fieldOrderManager; protected PostMail fieldPostMail; public PostMail getPostMail() { return fieldPostMail; } public void setPostMail(PostMail inPostMail) { fieldPostMail = inPostMail; } public OrderManager getOrderManager() { return fieldOrderManager; } public void setOrderManager(OrderManager inOrderManager) { fieldOrderManager = inOrderManager; } /* * public Data placeOrder(WebPageRequest req) { String catalogid = * req.findValue("catalogid"); * * Album album = getEnterMedia(req).getAlbumArchive().loadAlbum("4", * req.getUserName()); HitTracker assets = album.getAssets(catalogid, req); * if (assets.size() > 0) { Map props = new HashMap(); * * String applicationid = req.findValue("applicationid"); Data order = * getOrderManager().placeOrder(applicationid, catalogid, req.getUser(), * assets, props); req.putPageValue("order", order); * req.setRequestParameter("orderid", order.getId()); List realassets = new * ArrayList(); // this is really bizarre. We're loading the assets into * memory // simply to have them turned into BaseData objects. // Need a * better way to remove stuff from an album. for (Iterator iterator = * assets.iterator(); iterator.hasNext();) { Data hit = (Data) * iterator.next(); Asset asset = * getMediaArchive(catalogid).getAsset(hit.getId()); if (asset != null) { * realassets.add(asset); } } album.removeAssets(realassets, req); * * // <property name="subject">Order Placed</property> // TODO: Move these * to generic fields String prefix = req.findValue("subjectprefix"); if * (prefix == null) { prefix = "Order received:"; } prefix = prefix + " " + * order.getId(); * * String postfix = req.findValue("subjectpostfix"); if (postfix != null) { * prefix = prefix + " " + postfix; } req.putPageValue("subject", prefix); * * return order; } else { req.setCancelActions(true); } * * return null; } */ public Data createNewOrder(WebPageRequest inReq) { String catalogid = inReq.findValue("catalogid"); String applicationid = inReq.findValue("applicationid"); Order order = (Order) getOrderManager().createNewOrder(applicationid, catalogid, inReq.getUserName()); inReq.putPageValue("order", order); OrderHistory history = getOrderManager().createNewHistory(catalogid, order, inReq.getUser(), "newrecord"); getOrderManager().saveOrderWithHistory(catalogid, inReq.getUser(), order, history); inReq.setRequestParameter("orderid", order.getId()); return order; } public Order createOrderFromSelections(WebPageRequest inReq) { String catalogid = inReq.findValue("catalogid"); String hitssessionid = inReq.getRequestParameter("hitssessionid"); HitTracker assets = null; if (hitssessionid != null) { assets = (HitTracker) inReq.getSessionValue(hitssessionid); } else { assets = new ListHitTracker(); String[] sourcepaths = inReq.getRequestParameters("sourcepath"); if (sourcepaths == null) { log.error("No assets passed in"); return null; } for (int i = 0; i < sourcepaths.length; i++) { Data hit = new BaseData(); hit.setSourcePath(sourcepaths[i]); assets.add(hit); assets.addSelection(hit.getId()); } } if (assets == null) { return null; } Searcher itemsearcher = getSearcherManager().getSearcher(catalogid, "orderitem"); List orderitems = new ArrayList(); if (assets.hasSelections()) { Map props = new HashMap(); String applicationid = inReq.findValue("applicationid"); Order order = (Order) getOrderManager().createNewOrderWithId(applicationid, catalogid, inReq.getUserName()); inReq.putPageValue("order", order); inReq.setRequestParameter("orderid", order.getId()); for (Iterator iterator = assets.getSelectedHitracker().iterator(); iterator.hasNext();) { Data hit = (Data) iterator.next(); Asset asset = getMediaArchive(catalogid).getAssetBySourcePath(hit.getSourcePath()); if( asset != null) { getOrderManager().addItemToOrder(catalogid, order, asset, null); } } if (order.get("expireson") == null) { String days = getMediaArchive(catalogid).getCatalogSettingValue("orderexpiresdays"); if (days == null) { days = "30"; } GregorianCalendar cal = new GregorianCalendar(); cal.add(Calendar.DAY_OF_YEAR, Integer.parseInt(days)); order.setProperty("expireson", DateStorageUtil.getStorageUtil().formatForStorage(cal.getTime())); } getOrderManager().saveOrder(catalogid, inReq.getUser(), order); return order; } else { inReq.setCancelActions(true); } return null; } public Order createOrderFromData(WebPageRequest inReq) { String catalogid = inReq.findValue("catalogid"); String hitssessionid = inReq.getRequestParameter("hitssessionid"); String mergefield = inReq.getRequestParameter("mergefield"); if (mergefield == null) { mergefield = "assetid"; } HitTracker datalist = null; if (hitssessionid != null) { datalist = (HitTracker) inReq.getSessionValue(hitssessionid); } Searcher itemsearcher = getSearcherManager().getSearcher(catalogid, "orderitem"); List orderitems = new ArrayList(); if (datalist.getSelectedHitracker().size() > 0) { Map props = new HashMap(); String applicationid = inReq.findValue("applicationid"); Order order = (Order) getOrderManager().createNewOrderWithId(applicationid, catalogid, inReq.getUserName()); inReq.putPageValue("order", order); inReq.setRequestParameter("orderid", order.getId()); for (Iterator iterator = datalist.getSelectedHitracker().iterator(); iterator.hasNext();) { Data hit = (Data) iterator.next(); String targetid = hit.get(mergefield); Asset asset = getMediaArchive(catalogid).getAsset(targetid); getOrderManager().addItemToOrder(catalogid, order, asset, null); } if (order.get("expireson") == null) { String days = getMediaArchive(catalogid).getCatalogSettingValue("orderexpiresdays"); if (days == null) { days = "30"; } GregorianCalendar cal = new GregorianCalendar(); cal.add(Calendar.DAY_OF_YEAR, Integer.parseInt(days)); order.setProperty("expireson", DateStorageUtil.getStorageUtil().formatForStorage(cal.getTime())); } getOrderManager().saveOrder(catalogid, inReq.getUser(), order); return order; } else { inReq.setCancelActions(true); } return null; } public Collection saveItems(WebPageRequest inReq) throws Exception { String[] fields = inReq.getRequestParameters("field"); if (fields != null) { String[] items = inReq.getRequestParameters("itemid"); String catalogid = inReq.findValue("catalogid"); ArrayList toSave = getOrderManager().saveItems(catalogid, inReq, fields, items); return toSave; } return null; } public Order loadOrder(WebPageRequest inReq) { Order order = (Order) inReq.getPageValue("order"); if (order != null) { return order; } String catalogid = inReq.findValue("catalogid"); String orderid = inReq.findValue("orderid"); if (orderid == null) { orderid = inReq.getRequestParameter("id"); } if (orderid == null) { return null; } order = getOrderManager().loadOrder(catalogid, orderid); inReq.putPageValue("order", order); return order; } public Order saveOrder(WebPageRequest inReq) throws Exception { return saveOrder(inReq, false); } public Order createOrder(WebPageRequest inReq) throws Exception { return saveOrder(inReq, true); } public Order updateOrder(WebPageRequest inReq) throws Exception { Order order = loadOrder(inReq); String[] fields = inReq.getRequestParameters("field"); String catalogid = inReq.findValue("catalogid"); Searcher searcher = getSearcherManager().getSearcher(catalogid, "order"); searcher.updateData(inReq, fields, order); searcher.saveData(order, inReq.getUser()); return order; } public Order saveOrder(WebPageRequest inReq, boolean saveitems) throws Exception { Order order = loadOrder(inReq); if (order != null) { String catalogid = inReq.findValue("catalogid"); order = getOrderManager().createOrder(catalogid, inReq, saveitems); inReq.putPageValue("savedok", "true"); } return order; } public HitTracker findOrdersForUser(WebPageRequest req) { String catalogid = req.findValue("catalogid"); User owner = (User) req.getPageValue("owner"); if (owner == null) { owner = req.getUser(); } HitTracker orders = getOrderManager().findOrdersForUser(catalogid, owner); req.putPageValue("orders", orders); return orders; } public HitTracker findOrderItems(WebPageRequest req) { Order order = loadOrder(req); if (order != null) { String catalogid = req.findValue("catalogid"); String orderid = order.getId(); if (orderid == null) { orderid = req.getRequestParameter("orderid"); } HitTracker items = getOrderManager().findOrderItems(req, catalogid, order); req.putPageValue("orderitems", items); return items; } return null; } public void filterOrderItems(WebPageRequest req) { ArrayList<String> list = new ArrayList<String>(); //add omitted orders to a list String publishtype = req.getRequestParameter("publishdestination.value"); String catalogid = req.findValue("catalogid"); HitTracker items = (HitTracker) req.getPageValue("orderitems"); if (items == null) { Order order = loadOrder(req); if (order != null) { String orderid = order.getId(); if (orderid == null) { orderid = req.getRequestParameter("orderid"); } items = getOrderManager().findOrderItems(req, catalogid, order); } } if (items != null) { //get searchers Searcher publishdestsearcher = getMediaArchive(req).getSearcherManager().getSearcher(catalogid, "publishdestination"); Data publisher = (Data) publishdestsearcher.searchById(publishtype); String publishername = publisher.getName(); Searcher convertpresetsearcher = getMediaArchive(req).getSearcherManager().getSearcher(catalogid, "convertpreset"); //see if convertpreset has the appropriate field String publishtofield = "publishto" + publishername.replace(" ", "").toLowerCase(); if (convertpresetsearcher.getDetail(publishtofield) != null)//field is present { for (int i = 0; i < items.size(); i++) { Data data = items.get(i); Asset asset = getMediaArchive(req).getAsset(data.get("assetid")); String fileformat = asset.get("fileformat"); String rendertype = getMediaArchive(req).getMediaRenderType(fileformat); //build query SearchQuery presetquery = convertpresetsearcher.createSearchQuery(); presetquery.append(publishtofield, "true").append("inputtype", rendertype); //execute query HitTracker hits = convertpresetsearcher.search(presetquery); if (hits.size() > 0) continue; list.add(asset.getId()); } } } req.putPageValue("invaliditems", list);//process this in step2 } public HitTracker findOrderAssets(WebPageRequest req) { Order order = loadOrder(req); if (order != null) { String catalogid = req.findValue("catalogid"); String orderid = order.getId(); if (orderid == null) { orderid = req.getRequestParameter("orderid"); } HitTracker items = getOrderManager().findAssets(req, catalogid, order); req.putPageValue("orderassets", items); return items; } return null; } public HitTracker findOrderHistory(WebPageRequest req) { Order order = loadOrder(req); if (order != null) { String catalogid = req.findValue("catalogid"); String orderid = order.getId(); if (orderid == null) { orderid = req.getRequestParameter("orderid"); } HitTracker items = getOrderManager().findOrderHistory(catalogid, order); req.putPageValue("orderhistory", items); return items; } return null; } public boolean checkItemApproval(WebPageRequest inReq) throws Exception { if (inReq.getUser() == null) { return false; } MediaArchive archive = getMediaArchive(inReq); // Searcher ordersearcher = // archive.getSearcherManager().getSearcher(archive.getCatalogId(), // "order"); // SearchQuery search = ordersearcinKeyher.createSearchQuery(); // search.addExact("userid", inReq.getUser().getId()); // search.addExact("orderstatus", "processed"); // search.addSortBy("date"); // HitTracker hits = ordersearcher.search(search); // look for the most recent order for an approved asset Asset asset = (Asset) inReq.getPageValue("asset"); String sourcepath = null; if (asset != null) { sourcepath = asset.getSourcePath(); } else { sourcepath = archive.getSourcePathForPage(inReq); } if (sourcepath == null) { return false; } Searcher itemsearcher = archive.getSearcherManager().getSearcher(archive.getCatalogId(), "orderitem"); SearchQuery search = itemsearcher.createSearchQuery(); search.addExact("userid", inReq.getUser().getId()); search.addExact("assetsourcepath", sourcepath); search.addMatches("status", "approved"); HitTracker results = itemsearcher.search(search); if (results.size() > 0) { return true; } return false; } public void removeSelectionFromOrderBasket(WebPageRequest inReq) { MediaArchive archive = getMediaArchive(inReq); Order basket = loadOrderBasket(inReq); String hitssessionid = inReq.getRequestParameter("hitssessionid"); HitTracker assets = (HitTracker) inReq.getSessionValue(hitssessionid); for (Iterator iterator = assets.getSelectedHitracker().iterator(); iterator.hasNext();) { Data hit = (Data) iterator.next(); Asset asset = getMediaArchive(archive.getCatalogId()).getAsset(hit.getId()); getOrderManager().removeItemFromOrder(archive.getCatalogId(), basket, asset); } inReq.removeSessionValue(hitssessionid); loadAssets(inReq); } public void toggleItemInOrderBasket(WebPageRequest inReq) { MediaArchive archive = getMediaArchive(inReq); Order basket = loadOrderBasket(inReq); String assetid = inReq.getRequestParameter("assetid"); Asset asset = archive.getAsset(assetid, inReq); getOrderManager().toggleItemInOrder(archive, basket, asset); } public Data addItemToOrderBasket(WebPageRequest inReq) { MediaArchive archive = getMediaArchive(inReq); Order basket = loadOrderBasket(inReq); String[] assetids = inReq.getRequestParameters("assetid"); String[] fields = inReq.getRequestParameters("field"); Map props = new HashMap(); if (fields != null) { for (int i = 0; i < fields.length; i++) { String key = fields[i]; String value = inReq.getRequestParameter(key + ".value"); props.put(key, value); } } for (int i = 0; i < assetids.length; i++) { String assetid = assetids[i]; Asset asset = archive.getAsset(assetid); getOrderManager().addItemToOrder(archive.getCatalogId(), basket, asset, props); } return basket; } public Data addSelectionsToOrderBasket(WebPageRequest inReq) { MediaArchive archive = getMediaArchive(inReq); Order basket = loadOrderBasket(inReq); String hitssessionid = inReq.getRequestParameter("hitssessionid"); HitTracker assets = (HitTracker) inReq.getSessionValue(hitssessionid); String[] fields = inReq.getRequestParameters("field"); Map props = new HashMap(); if (fields != null) { for (int i = 0; i < fields.length; i++) { String key = fields[i]; String value = inReq.getRequestParameter(key + ".value"); props.put(key, value); } } int added = getOrderManager().addItemsToBasket(inReq, archive, basket, assets.getSelectedHitracker(), props); inReq.putPageValue("added", Integer.valueOf(added)); return basket; } public Order loadOrderBasket(WebPageRequest inReq) { MediaArchive archive = getMediaArchive(inReq); Order basket = (Order) inReq.getPageValue("orderbasket"); if (basket == null) { String id = inReq.getUserName() + "_orderbasket"; String appid = inReq.findValue("applicationid"); Searcher searcher = getSearcherManager().getSearcher(archive.getCatalogId(), "order"); basket = (Order) searcher.searchById(id); if (basket == null) { basket = getOrderManager().createNewOrder(appid, archive.getCatalogId(), inReq.getUserName()); basket.setId(id); getOrderManager().saveOrder(archive.getCatalogId(), inReq.getUser(), basket); } basket.setProperty("basket", "true"); inReq.putSessionValue("orderbasket", basket); } inReq.putPageValue("order", basket); HitTracker items = loadOrderManager(inReq).findOrderItems(inReq, archive.getCatalogId(), basket); inReq.putPageValue("orderitems", items); String check = inReq.findValue("clearmissing"); if (Boolean.parseBoolean(check)) { //Make sure these have the same number of assets found getOrderManager().removeMissingAssets(inReq, archive, basket, items); } return basket; } public HitTracker loadAssets(WebPageRequest inReq) { String catalogid = inReq.findValue("catalogid"); Order order = loadOrder(inReq); return getOrderManager().findAssets(inReq, catalogid, order); } public void preprocessOrder(WebPageRequest inReq) { String [] orderids = inReq.getRequestParameters("itemid"); for(String orderid:orderids) { String formatkey = new StringBuilder().append(orderid).append(".itemfiletype.value").toString(); if (!inReq.getParameterMap().containsKey(formatkey)){ continue; } String format = inReq.getParameterMap().get(formatkey).toString(); String presetkey = new StringBuilder().append(format).append(".presetid.value").toString(); if (!inReq.getParameterMap().containsKey(presetkey)){ continue; } String preset = inReq.getParameterMap().get(presetkey).toString(); String itempresetkey = new StringBuilder().append(orderid).append(".presetid.value").toString(); inReq.setRequestParameter(itempresetkey, preset); } } public void createConversionAndPublishRequest(WebPageRequest inReq) { // Order and item should be created from previous step. // now we get the items and update the destination information Order order = loadOrder(inReq); OrderManager manager = getOrderManager(); String catalogid = inReq.findValue("catalogid"); Searcher searcher = getSearcherManager().getSearcher(catalogid, "order"); if (order == null) { order = (Order) searcher.createNewData(); } String[] fields = inReq.getRequestParameters("field"); searcher.updateData(inReq, fields, order); MediaArchive archive = getMediaArchive(inReq); Map params = inReq.getParameterMap(); if (order.get("publishdestination") == null) { //String publishdestination = inReq.findValue("publishdestination.value"); //do something? default it to browser? order.setProperty("publishdestination", "0");//assume 0 for most orders, 0 can be told to use Aspera } List assetids = manager.addConversionAndPublishRequest(inReq, order, archive, params, inReq.getUser()); // OrderHistory history = // getOrderManager().createNewHistory(archive.getCatalogId(), order, // inReq.getUser(), "pending"); // history.setAssetIds(assetids); // manager.saveOrderWithHistory(archive.getCatalogId(), inReq.getUser(), // order, history); if (assetids.size() > 0) { order.setProperty("orderstatus", "pending"); } manager.saveOrder(archive.getCatalogId(), inReq.getUser(), order); log.info("Added conversion and publish requests for order id:" + order.getId()); } public void createQuickOrder(WebPageRequest inReq) { MediaArchive archive = getMediaArchive(inReq); OrderManager manager = getOrderManager(); String catalogid = inReq.findValue("catalogid"); Searcher searcher = getSearcherManager().getSearcher(catalogid, "order"); Searcher itemsearcher = getSearcherManager().getSearcher(catalogid, "orderitem"); Order order = (Order) searcher.createNewData(); order.setProperty("userid", inReq.getUserName()); String quickpublishid = inReq.getRequestParameter("quickid"); Data publishtemplate = archive.getData("quickpublish", quickpublishid); order.setProperty("publishdestination", publishtemplate.get("publishdestination"));//assume 0 for most orders, 0 can be told to use Aspera searcher.saveData(order, inReq.getUser()); String hitssessionid = inReq.getRequestParameter("hitssessionid"); HitTracker hits = (HitTracker) inReq.getSessionValue(hitssessionid); for (Iterator iterator = hits.getSelectedHitracker().iterator(); iterator.hasNext();) { Data hit = (Data) iterator.next(); Data item = itemsearcher.createNewData(); item.setProperty("presetid", publishtemplate.get("convertpreset")); item.setProperty("assetid", hit.getId()); item.setProperty("orderid", order.getId()); item.setId(itemsearcher.nextId()); itemsearcher.saveData(item, inReq.getUser()); } List assetids = manager.addConversionAndPublishRequest(inReq, order, archive, new HashMap(), inReq.getUser()); // OrderHistory history = // getOrderManager().createNewHistory(archive.getCatalogId(), order, // inReq.getUser(), "pending"); // history.setAssetIds(assetids); // manager.saveOrderWithHistory(archive.getCatalogId(), inReq.getUser(), // order, history); if (assetids.size() > 0) { order.setProperty("orderstatus", "pending"); } manager.saveOrder(archive.getCatalogId(), inReq.getUser(), order); inReq.putPageValue("order", order); inReq.putPageValue("data", order); log.info("Added conversion and publish requests for order id:" + order.getId()); } public Order placeOrderById(WebPageRequest inReq) { Order order = loadOrder(inReq); getOrderManager().placeOrder(inReq, getMediaArchive(inReq), order, false); inReq.removeSessionValue("orderbasket"); inReq.putPageValue("order", order); return order; // change the status of all the items and the order and save everything // fire event } public Order placeOrderFromBasket(WebPageRequest inReq) { Order order = loadOrderBasket(inReq); boolean resetid = Boolean.parseBoolean(inReq.findValue("resetid")); String prefix = inReq.findValue("subjectprefix"); if (prefix == null) { prefix = "Order received:"; } prefix = prefix + " " + order.getId(); String postfix = inReq.findValue("subjectpostfix"); if (postfix != null) { prefix = prefix + " " + postfix; } inReq.putPageValue("subject", prefix); getOrderManager().placeOrder(inReq, getMediaArchive(inReq), order, resetid); inReq.removeSessionValue("orderbasket"); inReq.putPageValue("order", order); return order; } public Order createOrderWithItems(WebPageRequest inReq) { String orderid = inReq.findValue("orderid"); if (orderid != null) { return loadOrder(inReq); } String[] assetids = inReq.getRequestParameters("assetid"); if (assetids != null && assetids.length > 0 && assetids[0].length() > 0) { return createOrderFromAssets(inReq); } return createOrderFromSelections(inReq); } public Order createOrderFromAssets(WebPageRequest inReq) { String catalogId = inReq.findValue("catalogid"); MediaArchive archive = getMediaArchive(catalogId); String[] assetids = inReq.getRequestParameters("assetid"); Order order = getOrderManager().createNewOrderWithId(inReq.findValue("applicationid"), catalogId, inReq.getUserName()); for (int i = 0; i < assetids.length; i++) { String id = assetids[i]; if (id.startsWith("multiedit:hits")) { HitTracker hits = (HitTracker) inReq.getSessionValue(id.substring("multiedit:".length())); if (hits != null) { for (Iterator iterator = hits.iterator(); iterator.hasNext();) { Data data = (Data) iterator.next(); Asset asset = archive.getAssetBySourcePath(data.getSourcePath()); getOrderManager().addItemToOrder(catalogId, order, asset, null); } } } else { Asset asset = archive.getAsset(id); getOrderManager().addItemToOrder(catalogId, order, asset, null); } } getOrderManager().saveOrder(catalogId, inReq.getUser(), order); inReq.putPageValue("order", order); return order; } public Order createOrderFromUpload(WebPageRequest inReq) { String catalogId = inReq.findValue("catalogid"); MediaArchive archive = getMediaArchive(catalogId); Collection assets = (Collection) inReq.getPageValue("uploadedassets"); Order order = getOrderManager().createNewOrderWithId(inReq.findValue("applicationid"), catalogId, inReq.getUserName()); // order.setProperty("orderstatus", "newupload"); List assetids = new ArrayList(); for (Iterator iter = assets.iterator(); iter.hasNext();) { Asset asset = (Asset) iter.next(); assetids.add(asset.getId()); getOrderManager().addItemToOrder(catalogId, order, asset, null); } // Order history needs to be updated OrderHistory history = getOrderManager().createNewHistory(catalogId, order, inReq.getUser(), "newupload"); history.setAssetIds(assetids); getOrderManager().saveOrderWithHistory(catalogId, inReq.getUser(), order, history); // getOrderManager().saveOrder(catalogId, inReq.getUser(), order); inReq.putPageValue("order", order); return order; } public OrderManager loadOrderManager(WebPageRequest inReq) { inReq.putPageValue("orderManager", getOrderManager()); return getOrderManager(); } public Data addUserStatus(WebPageRequest inReq) throws Exception { Order order = loadOrder(inReq); if (order != null) { String catalogid = inReq.findValue("catalogid"); String[] fields = inReq.getRequestParameters("field"); String userstatus = inReq.findValue("userstatus.value"); OrderHistory history = getOrderManager().createNewHistory(catalogid, order, inReq.getUser(), userstatus); Searcher searcher = getSearcherManager().getSearcher(catalogid, "orderhistory"); searcher.updateData(inReq, fields, history); getOrderManager().saveOrderWithHistory(catalogid, inReq.getUser(), order, history); } return order; } public void updatePendingOrders(WebPageRequest inReq) throws Exception { MediaArchive archive = getMediaArchive(inReq); Order order = loadOrder(inReq); if (order != null) { getOrderManager().updateStatus(archive, order); } else { getOrderManager().updatePendingOrders(archive); } } public void clearOrderItems(WebPageRequest inReq) { MediaArchive archive = getMediaArchive(inReq); HitTracker items = findOrderItems(inReq); Searcher searcher = getSearcherManager().getSearcher(archive.getCatalogId(), "orderitem"); for (Iterator iterator = items.iterator(); iterator.hasNext();) { Data item = (Data) iterator.next(); searcher.delete(item, inReq.getUser()); } } /* * public Data createMultiEditData(WebPageRequest inReq) throws Exception { * Order order = loadOrder(inReq); MediaArchive archive = * getMediaArchive(inReq); HitTracker hits = * getOrderManager().findAssets(inReq, archive.getCatalogId(), order); * CompositeAsset composite = new CompositeAsset(); for (Iterator iterator = * hits.iterator(); iterator.hasNext();) { Data target = (Data) * iterator.next(); Asset p = null; if (target instanceof Asset) { p = * (Asset) target; } else { String sourcepath = target.getSourcePath(); p = * archive.getAssetBySourcePath(sourcepath); } if (p != null) { * composite.addData(p); } } composite.setId("multiedit:" + * hits.getHitsName()); // set request param? * inReq.setRequestParameter("assetid", composite.getId()); * inReq.putPageValue("data", composite); inReq.putPageValue("asset", * composite); inReq.putSessionValue(composite.getId(), composite); * * return composite; } */ public void sendOrderEmail(WebPageRequest inReq) { // just a basic email download Order order = loadOrder(inReq); MediaArchive archive = getMediaArchive(inReq); String catalogid = archive.getCatalogId(); String[] emails = inReq.getRequestParameters("sharewithemail.value"); String[] organizations = inReq.getRequestParameters("organization.value"); HitTracker orderItems = getOrderManager().findOrderItems(inReq, archive.getCatalogId(), order); inReq.putPageValue("orderitems", orderItems); inReq.putPageValue("order", order); try { OrderHistory history = getOrderManager().createNewHistory(catalogid, order, inReq.getUser(), "created"); inReq.putPageValue("order", order); TemplateWebEmail mailer = getPostMail().getTemplateWebEmail(); String templatepage = inReq.findValue("sharetemplate"); Page template = getPageManager().getPage(templatepage); mailer.loadSettings(inReq.copy(template)); mailer.setMailTemplatePage(template); String subject = mailer.getWebPageContext().findValue("subject"); if (subject == null) { subject = "Share notification"; } mailer.setSubject(subject); mailer.setRecipientsFromStrings(Arrays.asList(emails)); mailer.send(); getOrderManager().saveOrderWithHistory(catalogid, inReq.getUser(), order, history); } catch (Exception e) { throw new OpenEditException(e); } } public void deleteOrder(WebPageRequest inReq) throws Exception { Order order = loadOrder(inReq); String catalogid = inReq.findValue("catalogid"); getOrderManager().delete(catalogid, order); } public void removeItem(WebPageRequest inReq) throws Exception { String catalogid = inReq.findValue("catalogid"); String itemid = inReq.getRequestParameter("id"); getOrderManager().removeItem(catalogid, itemid); } public Order loadOrderForVisitor(WebPageRequest inReq) { Order order = loadOrder(inReq); //check the expriation if (order.isExpired()) { inReq.putPageValue("expired", Boolean.TRUE); } else { inReq.putPageValue("expired", Boolean.FALSE); } //load up hits and select all the items. HitTracker hits = loadAssets(inReq); hits.selectAll(); inReq.putPageValue("hits", hits); inReq.putSessionValue("vieworder", order); return order; } public Boolean canViewAsset(WebPageRequest inReq) { // String orderid = inReq.getRequestParameter("orderid"); // if (orderid == null) // { // return false; // } Order order = loadOrder(inReq); if( order == null) { order = (Order)inReq.getSessionValue("vieworder"); } if( order == null ) { return false; } Asset asset = getAsset(inReq); if( asset == null) { log.info("Asset not found"); return false; } String catalogid = inReq.findValue("catalogid"); HitTracker assets = getOrderManager().findOrderItems(inReq, catalogid, order); int found = assets.findRow("assetid", asset.getId()); if( found > -1 && !order.isExpired() ) { return true; } return false; } }