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.CmsIllegalStateException; 38 import org.opencms.main.CmsLog; 39 import org.opencms.main.OpenCms; 40 import org.opencms.search.CmsSearchDocumentType; 41 import org.opencms.search.CmsSearchIndexSource; 42 import org.opencms.search.CmsSearchManager; 43 import org.opencms.workplace.list.CmsListColumnAlignEnum; 44 import org.opencms.workplace.list.CmsListColumnDefinition; 45 import org.opencms.workplace.list.CmsListDirectAction; 46 import org.opencms.workplace.list.CmsListItem; 47 import org.opencms.workplace.list.CmsListItemDetails; 48 import org.opencms.workplace.list.CmsListItemDetailsFormatter; 49 import org.opencms.workplace.list.CmsListMetadata; 50 import org.opencms.workplace.list.CmsListOrderEnum; 51 52 import java.util.ArrayList ; 53 import java.util.Iterator ; 54 import java.util.List ; 55 56 import javax.servlet.http.HttpServletRequest ; 57 import javax.servlet.http.HttpServletResponse ; 58 import javax.servlet.jsp.PageContext ; 59 60 import org.apache.commons.logging.Log; 61 62 75 public class CmsDocumentTypeList extends A_CmsEmbeddedListDialog { 76 77 78 public static final String LIST_ACTION_NONE = "an"; 79 80 81 public static final String LIST_COLUMN_DOCCLASS = "cdc"; 82 83 84 public static final String LIST_COLUMN_ICON = "ci"; 85 86 87 public static final String LIST_COLUMN_NAME = "cn"; 88 89 90 public static final String LIST_DETAIL_MIMETYPES = "dmt"; 91 92 93 public static final String LIST_DETAIL_RESOURCETYPES = "drt"; 94 95 96 public static final String LIST_ID = "lssisdt"; 97 98 99 protected static final String ICON_DOCTYPE = "tools/searchindex/icons/small/indexsource-doctype.png"; 100 101 102 private static final Log LOG = CmsLog.getLog(CmsDocumentTypeList.class); 103 104 105 private String m_paramIndexsource; 106 107 112 public CmsDocumentTypeList(CmsJspActionElement jsp) { 113 114 this(jsp, LIST_ID, Messages.get().container(Messages.GUI_LIST_DOCUMENTTYPES_NAME_0)); 115 } 116 117 124 public CmsDocumentTypeList(CmsJspActionElement jsp, String listId, CmsMessageContainer listName) { 125 126 this(jsp, listId, listName, LIST_COLUMN_NAME, CmsListOrderEnum.ORDER_ASCENDING, null); 127 } 128 129 139 public CmsDocumentTypeList( 140 CmsJspActionElement jsp, 141 String listId, 142 CmsMessageContainer listName, 143 String sortedColId, 144 CmsListOrderEnum sortOrder, 145 String searchableColId) { 146 147 super(jsp, listId, listName, sortedColId, sortOrder, searchableColId); 148 149 } 150 151 160 public CmsDocumentTypeList(PageContext context, HttpServletRequest req, HttpServletResponse res) { 161 162 this(new CmsJspActionElement(context, req, res)); 163 } 164 165 168 public void executeListMultiActions() { 169 170 } 172 173 176 public void executeListSingleActions() { 177 178 } 180 181 186 public String getParamIndexsource() { 187 188 return m_paramIndexsource; 189 } 190 191 199 public void setParamIndexsource(String indexsource) { 200 201 m_paramIndexsource = indexsource; 202 } 203 204 207 protected void fillDetails(String detailId) { 208 209 List items = getList().getAllContent(); 211 Iterator itItems = items.iterator(); 212 CmsListItem item; 213 if (detailId.equals(LIST_DETAIL_MIMETYPES)) { 214 while (itItems.hasNext()) { 215 item = (CmsListItem)itItems.next(); 216 fillDetailMimetypes(item, detailId); 217 218 } 219 } 220 if (detailId.equals(LIST_DETAIL_RESOURCETYPES)) { 221 while (itItems.hasNext()) { 222 item = (CmsListItem)itItems.next(); 223 fillDetailResourceTypes(item, detailId); 224 225 } 226 227 } 228 229 } 230 231 234 protected List getListItems() { 235 236 List result = new ArrayList (); 237 List doctypes = documentTypes(); 239 Iterator itDoctypes = doctypes.iterator(); 240 CmsSearchDocumentType doctype; 241 while (itDoctypes.hasNext()) { 242 doctype = (CmsSearchDocumentType)itDoctypes.next(); 243 CmsListItem item = getList().newItem(doctype.getName()); 244 item.set(LIST_COLUMN_NAME, doctype.getName()); 245 item.set(LIST_COLUMN_DOCCLASS, doctype.getClassName()); 246 result.add(item); 247 } 248 return result; 249 } 250 251 254 protected void initMessages() { 255 256 addMessages(Messages.get().getBundleName()); 258 super.initMessages(); 260 } 261 262 265 protected void setColumns(CmsListMetadata metadata) { 266 267 CmsListColumnDefinition dummyCol = new CmsListColumnDefinition(LIST_COLUMN_ICON); 269 dummyCol.setName(Messages.get().container(Messages.GUI_LIST_DOCUMENTTYPE_NAME_0)); 270 dummyCol.setHelpText(Messages.get().container(Messages.GUI_LIST_DOCUMENTTYPE_NAME_HELP_0)); 271 dummyCol.setWidth("20"); 272 dummyCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT); 273 dummyCol.setSorteable(false); 274 CmsListDirectAction dummyAction = new CmsListDirectAction(LIST_ACTION_NONE); 276 dummyAction.setName(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_ICON_NAME_0)); 277 dummyAction.setHelpText(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_ICON_NAME_HELP_0)); 278 dummyAction.setIconPath(CmsDocumentTypeList.ICON_DOCTYPE); 279 dummyAction.setEnabled(false); 281 dummyCol.addDirectAction(dummyAction); 282 metadata.addColumn(dummyCol); 284 285 CmsListColumnDefinition nameCol = new CmsListColumnDefinition(LIST_COLUMN_NAME); 287 nameCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT); 288 nameCol.setName(Messages.get().container(Messages.GUI_LIST_SEARCHINDEX_COL_NAME_0)); 289 nameCol.setWidth("50%"); 290 metadata.addColumn(nameCol); 291 292 CmsListColumnDefinition docclassCol = new CmsListColumnDefinition(LIST_COLUMN_DOCCLASS); 294 docclassCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT); 295 docclassCol.setName(Messages.get().container(Messages.GUI_LIST_DOCTYPE_COL_DOCCLASS_0)); 296 docclassCol.setWidth("50%"); 297 metadata.addColumn(docclassCol); 298 299 } 300 301 304 protected void setIndependentActions(CmsListMetadata metadata) { 305 306 CmsListItemDetails mimetypeDetails = new CmsListItemDetails(LIST_DETAIL_MIMETYPES); 308 mimetypeDetails.setAtColumn(LIST_COLUMN_NAME); 309 mimetypeDetails.setVisible(false); 310 mimetypeDetails.setShowActionName(Messages.get().container(Messages.GUI_LIST_DOCTYPE_DETAIL_MIMETYPES_SHOW_0)); 311 mimetypeDetails.setShowActionHelpText(Messages.get().container( 312 Messages.GUI_LIST_DOCTYPE_DETAIL_MIMETYPES_SHOW_HELP_0)); 313 mimetypeDetails.setHideActionName(Messages.get().container(Messages.GUI_LIST_DOCTYPE_DETAIL_MIMETYPES_HIDE_0)); 314 mimetypeDetails.setHideActionHelpText(Messages.get().container( 315 Messages.GUI_LIST_DOCTYPE_DETAIL_MIMETYPES_HIDE_HELP_0)); 316 mimetypeDetails.setName(Messages.get().container(Messages.GUI_LIST_DOCTYPE_DETAIL_MIMETYPES_NAME_0)); 317 mimetypeDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 318 Messages.GUI_LIST_DOCTYPE_DETAIL_MIMETYPES_NAME_0))); 319 metadata.addItemDetails(mimetypeDetails); 320 321 CmsListItemDetails resourceDetails = new CmsListItemDetails(LIST_DETAIL_RESOURCETYPES); 323 resourceDetails.setAtColumn(LIST_COLUMN_NAME); 324 resourceDetails.setVisible(false); 325 resourceDetails.setShowActionName(Messages.get().container( 326 Messages.GUI_LIST_DOCTYPE_DETAIL_RESOURCETYPES_SHOW_0)); 327 resourceDetails.setShowActionHelpText(Messages.get().container( 328 Messages.GUI_LIST_DOCTYPE_DETAIL_RESOURCETYPES_SHOW_HELP_0)); 329 resourceDetails.setHideActionName(Messages.get().container( 330 Messages.GUI_LIST_DOCTYPE_DETAIL_RESOURCETYPES_HIDE_0)); 331 resourceDetails.setHideActionHelpText(Messages.get().container( 332 Messages.GUI_LIST_DOCTYPE_DETAIL_RESOURCETYPES_HIDE_HELP_0)); 333 resourceDetails.setName(Messages.get().container(Messages.GUI_LIST_DOCTYPE_DETAIL_RESOURCETYPES_NAME_0)); 334 resourceDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 335 Messages.GUI_LIST_DOCTYPE_DETAIL_RESOURCETYPES_NAME_0))); 336 metadata.addItemDetails(resourceDetails); 337 338 } 339 340 343 protected void setMultiActions(CmsListMetadata metadata) { 344 345 } 347 348 351 protected void validateParamaters() throws Exception { 352 353 if (getParamIndexsource() == null) { 355 throw new CmsIllegalStateException(Messages.get().container( 356 Messages.ERR_SEARCHINDEX_EDIT_MISSING_PARAM_1, 357 A_CmsEditIndexSourceDialog.PARAM_INDEXSOURCE)); 358 } 359 } 360 361 367 protected void writeConfiguration(boolean refresh) { 368 369 OpenCms.writeConfiguration(CmsSearchConfiguration.class); 371 if (refresh) { 372 refreshList(); 373 } 374 } 375 376 381 private List documentTypes() { 382 383 CmsSearchManager manager = OpenCms.getSearchManager(); 384 CmsSearchIndexSource indexsource = manager.getIndexSource(getParamIndexsource()); 385 List result; 386 if (indexsource != null) { 387 List doctypes = indexsource.getDocumentTypes(); 388 result = new ArrayList (doctypes.size()); 390 Iterator it = doctypes.iterator(); 391 String doctypename = ""; 392 CmsSearchDocumentType doctype; 393 while (it.hasNext()) { 394 doctypename = (String )it.next(); 395 if (doctypename != null) { 396 doctype = manager.getDocumentTypeConfig(doctypename); 397 if (doctype != null) { 398 result.add(doctype); 399 } 400 } 401 } 402 } else { 403 result = new ArrayList (0); 404 if (LOG.isErrorEnabled()) { 405 LOG.error(Messages.get().getBundle().key( 406 Messages.ERR_SEARCHINDEX_EDIT_MISSING_PARAM_1, 407 A_CmsEditIndexSourceDialog.PARAM_INDEXSOURCE)); 408 } 409 } 410 return result; 411 } 412 413 420 private void fillDetailMimetypes(CmsListItem item, String detailId) { 421 422 CmsSearchManager searchManager = OpenCms.getSearchManager(); 423 StringBuffer html = new StringBuffer (); 424 425 String doctypeName = (String )item.get(LIST_COLUMN_NAME); 426 CmsSearchDocumentType docType = searchManager.getDocumentTypeConfig(doctypeName); 427 428 Iterator itMimetypes = docType.getMimeTypes().iterator(); 430 html.append("<ul>\n"); 431 while (itMimetypes.hasNext()) { 432 html.append(" <li>\n").append(" ").append(itMimetypes.next()).append("\n"); 433 html.append(" </li>"); 434 } 435 436 html.append("</ul>\n"); 437 item.set(detailId, html.toString()); 438 } 439 440 447 private void fillDetailResourceTypes(CmsListItem item, String detailId) { 448 449 CmsSearchManager searchManager = OpenCms.getSearchManager(); 450 StringBuffer html = new StringBuffer (); 451 452 String doctypeName = (String )item.get(LIST_COLUMN_NAME); 453 CmsSearchDocumentType docType = searchManager.getDocumentTypeConfig(doctypeName); 454 455 Iterator itResourcetypes = docType.getResourceTypes().iterator(); 457 html.append("<ul>\n"); 458 while (itResourcetypes.hasNext()) { 459 html.append(" <li>\n").append(" ").append(itResourcetypes.next()).append("\n"); 460 html.append(" </li>"); 461 } 462 463 html.append("</ul>\n"); 464 item.set(detailId, html.toString()); 465 } 466 } | Popular Tags |