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.OpenCms; 39 import org.opencms.search.CmsSearchDocumentType; 40 import org.opencms.search.CmsSearchIndex; 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.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.CmsListOrderEnum; 52 import org.opencms.workplace.tools.CmsToolDialog; 53 54 import java.io.IOException ; 55 import java.util.ArrayList ; 56 import java.util.HashMap ; 57 import java.util.Iterator ; 58 import java.util.List ; 59 import java.util.Map ; 60 61 import javax.servlet.ServletException ; 62 import javax.servlet.http.HttpServletRequest ; 63 import javax.servlet.http.HttpServletResponse ; 64 import javax.servlet.jsp.PageContext ; 65 66 80 public class CmsSearchIndexSourceList extends A_CmsEmbeddedListDialog { 81 82 83 public static final String LIST_COLUMN_ICON = "ci"; 84 85 86 public static final String LIST_COLUMN_INDEXER = "ca"; 87 88 89 public static final String LIST_COLUMN_NAME = "cn"; 90 91 92 public static final String LIST_DETAIL_DOCTYPES = "dd"; 93 94 95 public static final String LIST_DETAIL_RESOURCES = "dr"; 96 97 98 public static final String LIST_ID = "lssis"; 99 100 101 private String m_paramIndexName; 102 103 108 public CmsSearchIndexSourceList(CmsJspActionElement jsp) { 109 110 this(jsp, LIST_ID, Messages.get().container(Messages.GUI_LIST_INDEXSOURCES_NAME_0)); 111 } 112 113 120 public CmsSearchIndexSourceList(CmsJspActionElement jsp, String listId, CmsMessageContainer listName) { 121 122 this(jsp, listId, listName, LIST_COLUMN_NAME, CmsListOrderEnum.ORDER_ASCENDING, null); 123 } 124 125 135 public CmsSearchIndexSourceList( 136 CmsJspActionElement jsp, 137 String listId, 138 CmsMessageContainer listName, 139 String sortedColId, 140 CmsListOrderEnum sortOrder, 141 String searchableColId) { 142 143 super(jsp, listId, listName, sortedColId, sortOrder, searchableColId); 144 145 } 146 147 156 public CmsSearchIndexSourceList(PageContext context, HttpServletRequest req, HttpServletResponse res) { 157 158 this(new CmsJspActionElement(context, req, res)); 159 } 160 161 164 public void executeListMultiActions() { 165 166 } 168 169 176 public void executeListSingleActions() throws IOException , ServletException { 177 178 String indexSource = getSelectedItem().getId(); 179 Map params = new HashMap (); 180 String action = getParamListAction(); 181 if (action.equals(CmsSearchIndexSourceControlList.LIST_ACTION_OVERVIEW_INDEXSOURCE) 182 || action.equals(CmsSearchIndexSourceControlList.LIST_ACTION_OVERVIEW_INDEXSOURCE2)) { 183 params.put(A_CmsEditIndexSourceDialog.PARAM_INDEXSOURCE, indexSource); 185 params.put(PARAM_ACTION, DIALOG_INITIAL); 186 params.put(PARAM_STYLE, CmsToolDialog.STYLE_NEW); 187 getToolManager().jspForwardTool(this, "/searchindex/indexsources/indexsource", params); 188 } 189 } 190 191 198 public String getParamIndexName() { 199 200 return m_paramIndexName; 201 } 202 203 209 public void setParamIndexName(String paramSearchIndex) { 210 211 m_paramIndexName = paramSearchIndex; 212 } 213 214 217 protected void fillDetails(String detailId) { 218 219 List items = getList().getAllContent(); 221 Iterator itItems = items.iterator(); 222 CmsListItem item; 223 if (detailId.equals(LIST_DETAIL_DOCTYPES)) { 224 while (itItems.hasNext()) { 225 item = (CmsListItem)itItems.next(); 226 fillDetailDocTypes(item, detailId); 227 228 } 229 } 230 if (detailId.equals(LIST_DETAIL_RESOURCES)) { 231 while (itItems.hasNext()) { 232 item = (CmsListItem)itItems.next(); 233 fillDetailResources(item, detailId); 234 235 } 236 } 237 238 } 239 240 243 protected List getListItems() { 244 245 List result = new ArrayList (); 246 List sources = searchIndexSources(); 248 Iterator itSources = sources.iterator(); 249 CmsSearchIndexSource source; 250 while (itSources.hasNext()) { 251 source = (CmsSearchIndexSource)itSources.next(); 252 CmsListItem item = getList().newItem(source.getName()); 253 item.set(LIST_COLUMN_NAME, String.valueOf(source.getName())); 255 item.set(LIST_COLUMN_INDEXER, source.getIndexer().getClass()); 256 result.add(item); 257 } 258 return result; 259 } 260 261 264 protected void initMessages() { 265 266 addMessages(Messages.get().getBundleName()); 268 super.initMessages(); 270 } 271 272 275 protected void setColumns(CmsListMetadata metadata) { 276 277 CmsListColumnDefinition editCol = new CmsListColumnDefinition(LIST_COLUMN_ICON); 279 editCol.setName(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_ICON_NAME_0)); 280 editCol.setHelpText(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_ICON_NAME_HELP_0)); 281 editCol.setWidth("5"); 282 editCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT); 283 editCol.setSorteable(false); 284 CmsListDirectAction editAction = new CmsListDirectAction( 286 CmsSearchIndexSourceControlList.LIST_ACTION_OVERVIEW_INDEXSOURCE); 287 editAction.setName(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_ICON_NAME_0)); 288 editAction.setHelpText(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_ICON_NAME_HELP_0)); 289 editAction.setIconPath(CmsSearchIndexList.LIST_ICON_INDEXSOURCE); 290 editCol.addDirectAction(editAction); 291 metadata.addColumn(editCol); 293 294 CmsListColumnDefinition nameCol = new CmsListColumnDefinition(LIST_COLUMN_NAME); 296 nameCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT); 297 nameCol.setName(Messages.get().container(Messages.GUI_LIST_SEARCHINDEX_COL_NAME_0)); 298 nameCol.setWidth("55%"); 299 CmsListDefaultAction defEditAction = new CmsListDefaultAction( 301 CmsSearchIndexSourceControlList.LIST_ACTION_OVERVIEW_INDEXSOURCE2); 302 defEditAction.setName(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_OVERVIEW_NAME_0)); 303 defEditAction.setHelpText(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_OVERVIEW_NAME_HELP_0)); 304 nameCol.addDefaultAction(defEditAction); 305 metadata.addColumn(nameCol); 306 307 CmsListColumnDefinition analyzerCol = new CmsListColumnDefinition(LIST_COLUMN_INDEXER); 309 analyzerCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT); 310 analyzerCol.setName(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_COL_INDEXER_0)); 311 analyzerCol.setWidth("45%"); 312 metadata.addColumn(analyzerCol); 313 314 } 315 316 319 protected void setIndependentActions(CmsListMetadata metadata) { 320 321 CmsListItemDetails doctypeDetails = new CmsListItemDetails(LIST_DETAIL_DOCTYPES); 323 doctypeDetails.setAtColumn(LIST_COLUMN_NAME); 324 doctypeDetails.setVisible(false); 325 doctypeDetails.setShowActionName(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_DETAIL_DOCTYPE_SHOW_0)); 326 doctypeDetails.setShowActionHelpText(Messages.get().container( 327 Messages.GUI_LIST_INDEXSOURCE_DETAIL_DOCTYPE_SHOW_HELP_0)); 328 doctypeDetails.setHideActionName(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_DETAIL_DOCTYPE_HIDE_0)); 329 doctypeDetails.setHideActionHelpText(Messages.get().container( 330 Messages.GUI_LIST_INDEXSOURCE_DETAIL_DOCTYPE_HIDE_HELP_0)); 331 doctypeDetails.setName(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_DETAIL_DOCTYPE_NAME_0)); 332 doctypeDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 333 Messages.GUI_LIST_INDEXSOURCE_DETAIL_DOCTYPE_NAME_0))); 334 metadata.addItemDetails(doctypeDetails); 335 336 CmsListItemDetails resourceDetails = new CmsListItemDetails(LIST_DETAIL_RESOURCES); 338 resourceDetails.setAtColumn(LIST_COLUMN_NAME); 339 resourceDetails.setVisible(false); 340 resourceDetails.setShowActionName(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_DETAIL_RESOURCE_SHOW_0)); 341 resourceDetails.setShowActionHelpText(Messages.get().container( 342 Messages.GUI_LIST_INDEXSOURCE_DETAIL_RESOURCE_SHOW_HELP_0)); 343 resourceDetails.setHideActionName(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_DETAIL_RESOURCE_HIDE_0)); 344 resourceDetails.setHideActionHelpText(Messages.get().container( 345 Messages.GUI_LIST_INDEXSOURCE_DETAIL_RESOURCE_HIDE_HELP_0)); 346 resourceDetails.setName(Messages.get().container(Messages.GUI_LIST_INDEXSOURCE_DETAIL_RESOURCE_NAME_0)); 347 resourceDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 348 Messages.GUI_LIST_INDEXSOURCE_DETAIL_RESOURCE_NAME_0))); 349 metadata.addItemDetails(resourceDetails); 350 351 } 352 353 356 protected void setMultiActions(CmsListMetadata metadata) { 357 358 } 360 361 364 protected void validateParamaters() throws Exception { 365 366 if (getParamIndexName() == null) { 368 throw new CmsIllegalStateException(Messages.get().container( 369 Messages.ERR_SEARCHINDEX_EDIT_MISSING_PARAM_1, 370 A_CmsEditSearchIndexDialog.PARAM_INDEXNAME)); 371 } 372 } 373 374 380 protected void writeConfiguration(boolean refresh) { 381 382 OpenCms.writeConfiguration(CmsSearchConfiguration.class); 384 if (refresh) { 385 refreshList(); 386 } 387 } 388 389 396 private void fillDetailDocTypes(CmsListItem item, String detailId) { 397 398 CmsSearchManager searchManager = OpenCms.getSearchManager(); 399 StringBuffer html = new StringBuffer (); 400 401 String idxSourceName = (String )item.get(LIST_COLUMN_NAME); 403 CmsSearchIndexSource idxSource = searchManager.getIndexSource(idxSourceName); 404 405 List docTypes = idxSource.getDocumentTypes(); 407 Iterator itDocTypes = docTypes.iterator(); 409 CmsSearchDocumentType docType; 410 html.append("<ul>\n"); 411 while (itDocTypes.hasNext()) { 412 docType = searchManager.getDocumentTypeConfig(itDocTypes.next().toString()); 414 if (docType != null) { 416 417 html.append(" <li>\n").append(" ").append(docType.getName()).append("\n"); 418 html.append(" </li>"); 419 } 420 } 421 422 html.append("</ul>\n"); 423 item.set(detailId, html.toString()); 424 } 425 426 433 private void fillDetailResources(CmsListItem item, String detailId) { 434 435 CmsSearchManager searchManager = OpenCms.getSearchManager(); 436 StringBuffer html = new StringBuffer (); 437 438 String idxSourceName = (String )item.get(LIST_COLUMN_NAME); 440 CmsSearchIndexSource idxSource = searchManager.getIndexSource(idxSourceName); 441 442 List resources = idxSource.getResourcesNames(); 444 Iterator itResources = resources.iterator(); 446 html.append("<ul>\n"); 447 while (itResources.hasNext()) { 448 449 html.append(" <li>\n").append(" ").append(itResources.next().toString()).append("\n"); 450 html.append(" </li>"); 451 } 452 453 html.append("</ul>\n"); 454 455 item.set(detailId, html.toString()); 456 } 457 458 463 private List searchIndexSources() { 464 465 CmsSearchManager manager = OpenCms.getSearchManager(); 466 CmsSearchIndex index = manager.getIndex(getParamIndexName()); 467 List sources = index.getSources(); 468 return sources; 469 } 470 471 } 472 | Popular Tags |