1 31 32 package org.opencms.workplace.tools.searchindex; 33 34 import org.opencms.configuration.CmsSearchConfiguration; 35 import org.opencms.i18n.CmsMessageContainer; 36 import org.opencms.jsp.CmsJspActionElement; 37 import org.opencms.main.CmsLog; 38 import org.opencms.main.OpenCms; 39 import org.opencms.search.CmsSearchDocumentType; 40 import org.opencms.search.CmsSearchIndexSource; 41 import org.opencms.search.CmsSearchManager; 42 import org.opencms.workplace.CmsWorkplaceSettings; 43 import org.opencms.workplace.list.CmsListColumnAlignEnum; 44 import org.opencms.workplace.list.CmsListColumnDefinition; 45 import org.opencms.workplace.list.CmsListDefaultAction; 46 import org.opencms.workplace.list.CmsListDirectAction; 47 import org.opencms.workplace.list.CmsListItem; 48 import org.opencms.workplace.list.CmsListItemDetails; 49 import org.opencms.workplace.list.CmsListItemDetailsFormatter; 50 import org.opencms.workplace.list.CmsListMetadata; 51 import org.opencms.workplace.list.CmsListMultiAction; 52 import org.opencms.workplace.list.CmsListOrderEnum; 53 54 import java.util.ArrayList ; 55 import java.util.Iterator ; 56 import java.util.LinkedList ; 57 import java.util.List ; 58 59 import javax.servlet.http.HttpServletRequest ; 60 import javax.servlet.http.HttpServletResponse ; 61 import javax.servlet.jsp.PageContext ; 62 63 import org.apache.commons.logging.Log; 64 65 81 public class CmsDocumentTypeAddList extends A_CmsEmbeddedListDialog { 82 83 84 public static final String LIST_ACTION_ADD_DOCTYPE = "aad"; 85 86 87 public static final String LIST_ACTION_ADD_DOCTYPE2 = LIST_ACTION_ADD_DOCTYPE + "2"; 88 89 90 public static final String LIST_ACTION_NONE = "an"; 91 92 93 public static final String LIST_COLUMN_ADD_DOCTYPE = "cad"; 94 95 96 public static final String LIST_COLUMN_DOCCLASS = "cdc"; 97 98 99 public static final String LIST_COLUMN_ICON = "ci"; 100 101 102 public static final String LIST_COLUMN_NAME = "cn"; 103 104 105 public static final String LIST_DETAIL_MIMETYPES = "dmt"; 106 107 108 public static final String LIST_DETAIL_RESOURCETYPES = "drt"; 109 110 111 public static final String LIST_ID = "lssisdta"; 112 113 114 public static final String LIST_MACTION_ADD_DOCTYPE = "maad"; 115 116 117 private static final Log LOG = CmsLog.getLog(CmsDocumentTypeAddList.class); 118 119 120 private String m_paramIndexsource; 121 122 127 public CmsDocumentTypeAddList(CmsJspActionElement jsp) { 128 129 this(jsp, LIST_ID, Messages.get().container(Messages.GUI_LIST_DOCUMENTTYPES_AVAIL_NAME_0)); 130 } 131 132 139 public CmsDocumentTypeAddList(CmsJspActionElement jsp, String listId, CmsMessageContainer listName) { 140 141 this(jsp, listId, listName, LIST_COLUMN_NAME, CmsListOrderEnum.ORDER_ASCENDING, null); 142 } 143 144 154 public CmsDocumentTypeAddList( 155 CmsJspActionElement jsp, 156 String listId, 157 CmsMessageContainer listName, 158 String sortedColId, 159 CmsListOrderEnum sortOrder, 160 String searchableColId) { 161 162 super(jsp, listId, listName, sortedColId, sortOrder, searchableColId); 163 164 } 165 166 175 public CmsDocumentTypeAddList(PageContext context, HttpServletRequest req, HttpServletResponse res) { 176 177 this(new CmsJspActionElement(context, req, res)); 178 } 179 180 183 public void executeListMultiActions() { 184 185 CmsSearchManager searchManager = OpenCms.getSearchManager(); 186 if (getParamListAction().equals(LIST_MACTION_ADD_DOCTYPE)) { 187 Iterator itItems = getSelectedItems().iterator(); 189 CmsListItem listItem; 190 String doctype; 191 CmsSearchIndexSource idxsrc = searchManager.getIndexSource(getParamIndexsource()); 192 while (itItems.hasNext()) { 193 listItem = (CmsListItem)itItems.next(); 194 doctype = (String )listItem.get(LIST_COLUMN_NAME); 195 idxsrc.addDocumentType(doctype); 196 getList().removeItem(listItem.getId(), getLocale()); 197 } 198 writeConfiguration(false); 199 refreshList(); 200 } 201 listSave(); 202 } 203 204 207 public void executeListSingleActions() { 208 209 CmsSearchManager searchManager = OpenCms.getSearchManager(); 210 String action = getParamListAction(); 211 if (action.equals(LIST_ACTION_ADD_DOCTYPE) || action.equals(LIST_ACTION_ADD_DOCTYPE2)) { 212 CmsSearchIndexSource idxsrc = searchManager.getIndexSource(getParamIndexsource()); 213 CmsListItem item = getSelectedItem(); 214 String doctypeName = (String )item.get(LIST_COLUMN_NAME); 215 idxsrc.addDocumentType(doctypeName); 216 getList().removeItem(item.getId(), getLocale()); 217 refreshList(); 218 writeConfiguration(false); 219 } 220 } 221 222 227 public String getParamIndexsource() { 228 229 return m_paramIndexsource; 230 } 231 232 240 public void setParamIndexsource(String indexsource) { 241 242 m_paramIndexsource = indexsource; 243 } 244 245 248 protected void fillDetails(String detailId) { 249 250 List items = getList().getAllContent(); 252 Iterator itItems = items.iterator(); 253 CmsListItem item; 254 if (detailId.equals(LIST_DETAIL_MIMETYPES)) { 255 while (itItems.hasNext()) { 256 item = (CmsListItem)itItems.next(); 257 fillDetailMimetypes(item, detailId); 258 259 } 260 } 261 if (detailId.equals(LIST_DETAIL_RESOURCETYPES)) { 262 while (itItems.hasNext()) { 263 item = (CmsListItem)itItems.next(); 264 fillDetailResourceTypes(item, detailId); 265 266 } 267 268 } 269 270 } 271 272 275 protected List getListItems() { 276 277 List result = new ArrayList (); 278 List doctypes = documentTypes(); 280 Iterator itDoctypes = doctypes.iterator(); 281 CmsSearchDocumentType doctype; 282 while (itDoctypes.hasNext()) { 283 doctype = (CmsSearchDocumentType)itDoctypes.next(); 284 CmsListItem item = getList().newItem(doctype.getName()); 285 item.set(LIST_COLUMN_NAME, doctype.getName()); 286 item.set(LIST_COLUMN_DOCCLASS, doctype.getClassName()); 287 result.add(item); 288 } 289 return result; 290 } 291 292 295 protected void initMessages() { 296 297 addMessages(Messages.get().getBundleName()); 299 super.initMessages(); 301 } 302 303 306 protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) { 307 308 super.initWorkplaceRequestValues(settings, request); 309 } 310 311 314 protected void setColumns(CmsListMetadata metadata) { 315 316 CmsListColumnDefinition dummyCol = new CmsListColumnDefinition(LIST_COLUMN_ICON); 318 dummyCol.setName(Messages.get().container(Messages.GUI_LIST_DOCUMENTTYPE_NAME_0)); 319 dummyCol.setHelpText(Messages.get().container(Messages.GUI_LIST_DOCUMENTTYPE_NAME_HELP_0)); 320 dummyCol.setWidth("20"); 321 dummyCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT); 322 dummyCol.setSorteable(false); 323 CmsListDirectAction dummyAction = new CmsListDirectAction(LIST_ACTION_NONE); 325 dummyAction.setName(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_ICON_NAME_0)); 326 dummyAction.setHelpText(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_ICON_NAME_HELP_0)); 327 dummyAction.setIconPath(CmsDocumentTypeList.ICON_DOCTYPE); 328 dummyAction.setEnabled(false); 330 dummyCol.addDirectAction(dummyAction); 331 metadata.addColumn(dummyCol); 333 334 CmsListColumnDefinition addCol = new CmsListColumnDefinition(LIST_COLUMN_ADD_DOCTYPE); 336 addCol.setName(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_ADD_DOCTYPE_NAME_0)); 337 addCol.setHelpText(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_ADD_DOCTYPE_NAME_HELP_0)); 338 addCol.setWidth("20"); 339 addCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT); 340 addCol.setSorteable(false); 341 CmsListDirectAction addAction = new CmsListDirectAction(LIST_ACTION_ADD_DOCTYPE); 343 addAction.setName(Messages.get().container(Messages.GUI_LIST_SEARCHINDEX_ACTION_ADD_DOCTYPE_NAME_0)); 344 addAction.setHelpText(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_ADD_DOCTYPE_NAME_HELP_0)); 345 addAction.setIconPath(ICON_ADD); 346 addCol.addDirectAction(addAction); 347 metadata.addColumn(addCol); 348 349 CmsListColumnDefinition nameCol = new CmsListColumnDefinition(LIST_COLUMN_NAME); 351 nameCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT); 352 nameCol.setName(Messages.get().container(Messages.GUI_LIST_SEARCHINDEX_COL_NAME_0)); 353 nameCol.setWidth("50%"); 354 metadata.addColumn(nameCol); 355 CmsListDefaultAction remAction2 = new CmsListDefaultAction(LIST_ACTION_ADD_DOCTYPE2); 357 remAction2.setName(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_ADD_DOCTYPE_NAME_0)); 358 remAction2.setHelpText(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_ADD_DOCTYPE_NAME_HELP_0)); 359 nameCol.addDefaultAction(remAction2); 360 metadata.addColumn(nameCol); 361 362 CmsListColumnDefinition docclassCol = new CmsListColumnDefinition(LIST_COLUMN_DOCCLASS); 364 docclassCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT); 365 docclassCol.setName(Messages.get().container(Messages.GUI_LIST_DOCTYPE_COL_DOCCLASS_0)); 366 docclassCol.setWidth("45%"); 367 metadata.addColumn(docclassCol); 368 369 } 370 371 374 protected void setIndependentActions(CmsListMetadata metadata) { 375 376 CmsListItemDetails mimetypeDetails = new CmsListItemDetails(LIST_DETAIL_MIMETYPES); 378 mimetypeDetails.setAtColumn(LIST_COLUMN_NAME); 379 mimetypeDetails.setVisible(false); 380 mimetypeDetails.setShowActionName(Messages.get().container(Messages.GUI_LIST_DOCTYPE_DETAIL_MIMETYPES_SHOW_0)); 381 mimetypeDetails.setShowActionHelpText(Messages.get().container( 382 Messages.GUI_LIST_DOCTYPE_DETAIL_MIMETYPES_SHOW_HELP_0)); 383 mimetypeDetails.setHideActionName(Messages.get().container(Messages.GUI_LIST_DOCTYPE_DETAIL_MIMETYPES_HIDE_0)); 384 mimetypeDetails.setHideActionHelpText(Messages.get().container( 385 Messages.GUI_LIST_DOCTYPE_DETAIL_MIMETYPES_HIDE_HELP_0)); 386 mimetypeDetails.setName(Messages.get().container(Messages.GUI_LIST_DOCTYPE_DETAIL_MIMETYPES_NAME_0)); 387 mimetypeDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 388 Messages.GUI_LIST_DOCTYPE_DETAIL_MIMETYPES_NAME_0))); 389 metadata.addItemDetails(mimetypeDetails); 390 391 CmsListItemDetails resourceDetails = new CmsListItemDetails(LIST_DETAIL_RESOURCETYPES); 393 resourceDetails.setAtColumn(LIST_COLUMN_NAME); 394 resourceDetails.setVisible(false); 395 resourceDetails.setShowActionName(Messages.get().container( 396 Messages.GUI_LIST_DOCTYPE_DETAIL_RESOURCETYPES_SHOW_0)); 397 resourceDetails.setShowActionHelpText(Messages.get().container( 398 Messages.GUI_LIST_DOCTYPE_DETAIL_RESOURCETYPES_SHOW_HELP_0)); 399 resourceDetails.setHideActionName(Messages.get().container( 400 Messages.GUI_LIST_DOCTYPE_DETAIL_RESOURCETYPES_HIDE_0)); 401 resourceDetails.setHideActionHelpText(Messages.get().container( 402 Messages.GUI_LIST_DOCTYPE_DETAIL_RESOURCETYPES_HIDE_HELP_0)); 403 resourceDetails.setName(Messages.get().container(Messages.GUI_LIST_DOCTYPE_DETAIL_RESOURCETYPES_NAME_0)); 404 resourceDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 405 Messages.GUI_LIST_DOCTYPE_DETAIL_RESOURCETYPES_NAME_0))); 406 metadata.addItemDetails(resourceDetails); 407 408 } 409 410 413 protected void setMultiActions(CmsListMetadata metadata) { 414 415 CmsListMultiAction addMultiAction = new CmsListMultiAction(LIST_MACTION_ADD_DOCTYPE); 417 addMultiAction.setName(Messages.get().container(Messages.GUI_LIST_SEARCHINDEX_MACTION_ADD_DOCTYPE_NAME_0)); 418 addMultiAction.setHelpText(Messages.get().container( 419 Messages.GUI_LIST_SEARCHINDEX_MACTION_ADD_DOCTYPE_NAME_HELP_0)); 420 addMultiAction.setIconPath(ICON_MULTI_ADD); 421 metadata.addMultiAction(addMultiAction); 422 } 423 424 430 protected void writeConfiguration(boolean refresh) { 431 432 OpenCms.writeConfiguration(CmsSearchConfiguration.class); 434 if (refresh) { 435 refreshList(); 436 } 437 } 438 439 446 private List documentTypes() { 447 448 CmsSearchManager manager = OpenCms.getSearchManager(); 449 CmsSearchIndexSource indexsource = manager.getIndexSource(getParamIndexsource()); 450 List result; 451 if (indexsource != null) { 452 List systemDoctypeNames = new LinkedList (manager.getDocumentTypeConfigs().keySet()); 454 List doctypeNames = new LinkedList (indexsource.getDocumentTypes()); 455 systemDoctypeNames.removeAll(doctypeNames); 457 458 result = new ArrayList (systemDoctypeNames.size()); 460 Iterator it = systemDoctypeNames.iterator(); 461 String doctypename = ""; 462 CmsSearchDocumentType doctype; 463 while (it.hasNext()) { 464 doctypename = (String )it.next(); 465 if (doctypename != null) { 466 doctype = manager.getDocumentTypeConfig(doctypename); 467 if (doctype != null) { 468 result.add(doctype); 469 } 470 } 471 } 472 } else { 473 result = new ArrayList (0); 474 if (LOG.isErrorEnabled()) { 475 LOG.error(Messages.get().getBundle().key(Messages.ERR_SEARCHINDEX_EDIT_MISSING_PARAM_1, "indexsource")); 476 } 477 } 478 return result; 479 } 480 481 488 private void fillDetailMimetypes(CmsListItem item, String detailId) { 489 490 CmsSearchManager searchManager = OpenCms.getSearchManager(); 491 StringBuffer html = new StringBuffer (); 492 493 String doctypeName = (String )item.get(LIST_COLUMN_NAME); 494 CmsSearchDocumentType docType = searchManager.getDocumentTypeConfig(doctypeName); 495 496 Iterator itMimetypes = docType.getMimeTypes().iterator(); 498 html.append("<ul>\n"); 499 while (itMimetypes.hasNext()) { 500 html.append(" <li>\n").append(" ").append(itMimetypes.next()).append("\n"); 501 html.append(" </li>"); 502 } 503 504 html.append("</ul>\n"); 505 item.set(detailId, html.toString()); 506 } 507 508 515 private void fillDetailResourceTypes(CmsListItem item, String detailId) { 516 517 CmsSearchManager searchManager = OpenCms.getSearchManager(); 518 StringBuffer html = new StringBuffer (); 519 520 String doctypeName = (String )item.get(LIST_COLUMN_NAME); 521 CmsSearchDocumentType docType = searchManager.getDocumentTypeConfig(doctypeName); 522 523 Iterator itResourcetypes = docType.getResourceTypes().iterator(); 525 html.append("<ul>\n"); 526 while (itResourcetypes.hasNext()) { 527 html.append(" <li>\n").append(" ").append(itResourcetypes.next()).append("\n"); 528 html.append(" </li>"); 529 } 530 531 html.append("</ul>\n"); 532 item.set(detailId, html.toString()); 533 } 534 } | Popular Tags |