Example usage for org.apache.wicket.markup.html.list ListView ListView

List of usage examples for org.apache.wicket.markup.html.list ListView ListView

Introduction

In this page you can find the example usage for org.apache.wicket.markup.html.list ListView ListView.

Prototype

public ListView(final String id, final List<T> list) 

Source Link

Usage

From source file:com.doculibre.constellio.wicket.panels.admin.solrConfig.SolrConfigPanel.java

License:Open Source License

private ListView getPropertiesListView(List<PropertyRow> propertyRows) {
    return new ListView("properties", propertyRows) {

        @Override/*from  www .  j ava2  s.c  o  m*/
        protected void populateItem(final ListItem item) {

            final PropertyRow propertyRow = (PropertyRow) item.getModelObject();
            item.setOutputMarkupId(true);
            item.add(new Label("property",
                    new StringResourceModel(propertyRow.getMessageKey(), SolrConfigPanel.this, null)));
            IModel stateModel = new LoadableDetachableModel() {

                protected Object load() {
                    SolrConfig config = solrConfigModel.getObject();
                    boolean isSet = PropertyResolver.getValue(propertyRow.getProperty(), config) != null;
                    return new StringResourceModel(isSet ? "yes" : "no", SolrConfigPanel.this, null)
                            .getObject();
                }

            };
            item.add(new Label("state", stateModel));
            AjaxLink defaultValueLink = new AjaxLink("defaultValue") {

                @Override
                public void onClick(AjaxRequestTarget target) {
                    SolrConfig config = solrConfigModel.getObject();
                    PropertyResolver.setValue(propertyRow.getProperty(), config, null, null);
                    target.addComponent(item);
                    save();
                }

                @Override
                public boolean isVisible() {
                    SolrConfig config = solrConfigModel.getObject();
                    return PropertyResolver.getValue(propertyRow.getProperty(), config) != null;
                }
            };
            item.add(defaultValueLink);
            IModel titleLabelModel = new LoadableDetachableModel() {

                @Override
                protected Object load() {
                    boolean isServerConfig = solrConfigModel.getObject().getRecordCollection() == null;
                    String resourceKey = isServerConfig ? "defaultValue" : "defaultServerValue";
                    return new StringResourceModel(resourceKey, SolrConfigPanel.this, null).getObject();
                }
            };
            defaultValueLink.add(new Label("label", titleLabelModel));

            if (propertyRow.isModalEdit()) {
                item.add(new ModalImgLinkHolder("editComponent") {
                    @Override
                    public WebMarkupContainer newLink(String id) {
                        return new AjaxLink(id) {
                            @Override
                            public void onClick(AjaxRequestTarget target) {
                                ModalWindow editModal = getModalWindow();
                                editModal.setInitialHeight(MODAL_HEIGHT);
                                editModal.setInitialWidth(MODAL_WIDTH);
                                String editMsg = getLocalizer().getString("edit", SolrConfigPanel.this);
                                editModal.setTitle(editMsg);

                                WebMarkupContainer editContent = propertyRow
                                        .getEditLinkPanel(editModal.getContentId());
                                editModal.setContent(editContent);
                                editModal.show(target);
                                target.addComponent(item);
                            }
                        };
                    }

                    @Override
                    protected Component newImg(String id) {
                        return new NonCachingImage(id,
                                new ResourceReference(BaseConstellioPage.class, "images/ico_crayon.png"));
                    }
                });
            } else if (propertyRow.getType().equals(Boolean.class)) {
                final IModel valueModel = propertyRow.createModel();
                item.add(new CheckBoxHolder("editComponent") {

                    @Override
                    protected WebMarkupContainer newInput(String id) {
                        return new AjaxCheckBox(id, valueModel) {

                            @Override
                            protected void onUpdate(AjaxRequestTarget target) {
                                save();
                                target.addComponent(item);
                            }

                            @Override
                            public void detachModels() {
                                super.detachModels();
                                valueModel.detach();
                            }

                        };
                    }
                });
            } else {
                final IModel valueModel = propertyRow.createModel();
                item.add(new AjaxEditableLabel("editComponent", valueModel) {

                    @Override
                    protected void onSubmit(AjaxRequestTarget target) {
                        super.onSubmit(target);
                        save();
                        target.addComponent(item);
                    }

                    @Override
                    public void detachModels() {
                        super.detachModels();
                        valueModel.detach();
                    }

                });
            }

        }

    };
}

From source file:com.doculibre.constellio.wicket.panels.admin.user.AddEditUserPanel.java

License:Open Source License

public AddEditUserPanel(String id, ConstellioUser user) {
    super(id, true);
    this.userModel = new ReloadableEntityModel<ConstellioUser>(user);

    Form form = getForm();/*  w w  w  .  j  a v  a 2s  .com*/
    form.setModel(new CompoundPropertyModel(userModel));

    TextField username = new RequiredTextField("username");
    form.add(username);

    password = new PasswordTextField("password", new Model());
    form.add(password);
    password.setRequired(user.getId() == null);

    PasswordTextField passwordConfirmation = new PasswordTextField("passwordConfirmation", new Model());
    form.add(passwordConfirmation);
    passwordConfirmation.setRequired(user.getId() == null);

    TextField firstName = new RequiredTextField("firstName");
    form.add(firstName);

    TextField lastName = new RequiredTextField("lastName");
    form.add(lastName);

    IModel languagesModel = new LoadableDetachableModel() {
        @Override
        protected Object load() {
            List<String> supportedLanguages = new ArrayList<String>();
            List<Locale> supportedLocales = ConstellioSpringUtils.getSupportedLocales();
            for (Locale supportedLocale : supportedLocales) {
                supportedLanguages.add(supportedLocale.getLanguage());
            }
            return supportedLanguages;
        }
    };

    IChoiceRenderer languagesRenderer = new ChoiceRenderer() {
        @Override
        public Object getDisplayValue(Object object) {
            return new Locale((String) object).getDisplayLanguage(getLocale());
        }
    };

    DropDownChoice languageField = new DropDownChoice("localeCode", languagesModel, languagesRenderer);
    form.add(languageField);
    languageField.setRequired(true);
    languageField.setNullValid(false);

    CheckBox admin = new CheckBox("admin");
    form.add(admin);

    CheckBox collaborator = new CheckBox("collaborator");
    form.add(collaborator);

    form.add(new EqualPasswordInputValidator(password, passwordConfirmation));

    visibleCredentialGroupsModel = new LoadableDetachableModel() {
        @Override
        protected Object load() {
            Set<CredentialGroup> visibleCredentialGroups = new HashSet<CredentialGroup>();
            ConstellioUser user = userModel.getObject();
            RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices();
            FederationServices federationServices = ConstellioSpringUtils.getFederationServices();
            for (RecordCollection collection : collectionServices.list()) {
                if (user.hasSearchPermission(collection)) {
                    Collection<CredentialGroup> searchCredentialGroups;
                    if (collection.isFederationOwner()) {
                        searchCredentialGroups = federationServices.listCredentialGroups(collection);
                    } else {
                        searchCredentialGroups = collection.getCredentialGroups();
                    }
                    for (CredentialGroup credentialGroup : searchCredentialGroups) {
                        visibleCredentialGroups.add(credentialGroup);
                    }
                }
            }
            return new ArrayList<CredentialGroup>(visibleCredentialGroups);
        }
    };

    credentialGroupsListView = new ListView("credentialGroups", visibleCredentialGroupsModel) {
        @Override
        protected void populateItem(ListItem item) {
            CredentialGroup credentialGroup = (CredentialGroup) item.getModelObject();
            RecordCollection collection = credentialGroup.getRecordCollection();
            Locale displayLocale = collection.getDisplayLocale(getLocale());
            ConstellioUser user = userModel.getObject();
            String credentialGroupLabel = credentialGroup.getName() + " (" + collection.getTitle(displayLocale)
                    + ")";

            EntityModel<UserCredentials> userCredentialsModel = userCredentialsModelMap
                    .get(credentialGroup.getId());
            if (userCredentialsModel == null) {
                UserCredentials userCredentials = user.getUserCredentials(credentialGroup);
                if (userCredentials == null) {
                    userCredentials = new UserCredentials();
                }
                userCredentialsModel = new EntityModel<UserCredentials>(userCredentials);
                userCredentialsModelMap.put(credentialGroup.getId(), userCredentialsModel);
            }

            final TextField usernameField = new TextField("username",
                    new PropertyModel(userCredentialsModel, "username"));
            final EntityModel<UserCredentials> finalUserCredentialsModel = userCredentialsModel;
            PasswordTextField encrypedPasswordField = new PasswordTextField("encryptedPassword", new Model() {
                @Override
                public Object getObject() {
                    UserCredentials userCredentials = finalUserCredentialsModel.getObject();
                    return EncryptionUtils.decrypt(userCredentials.getEncryptedPassword());
                }

                @Override
                public void setObject(Object object) {
                    UserCredentials userCredentials = finalUserCredentialsModel.getObject();
                    String encryptedPassword = EncryptionUtils.encrypt((String) object);
                    if (encryptedPassword != null || StringUtils.isEmpty(usernameField.getInput())) {
                        userCredentials.setEncryptedPassword(encryptedPassword);
                    }
                }
            });
            encrypedPasswordField.setRequired(false);
            TextField domainField = new TextField("domain", new PropertyModel(userCredentialsModel, "domain"));

            item.add(new Label("name", credentialGroupLabel));
            item.add(usernameField);
            item.add(encrypedPasswordField);
            item.add(domainField);
        }

        @SuppressWarnings("unchecked")
        @Override
        public boolean isVisible() {
            boolean visible = super.isVisible();
            if (visible) {
                List<CredentialGroup> credentialGroups = (List<CredentialGroup>) visibleCredentialGroupsModel
                        .getObject();
                visible = !credentialGroups.isEmpty();
            }
            return visible;
        }
    };
    form.add(credentialGroupsListView);
}

From source file:com.doculibre.constellio.wicket.panels.elevate.queries.EditRecordElevatedQueriesPanel.java

License:Open Source License

public EditRecordElevatedQueriesPanel(String id, Record record, final SimpleSearch simpleSearch) {
    super(id);//  ww  w . j a v a2 s . c o m
    this.recordModel = new RecordModel(record);
    this.simpleSearch = simpleSearch;
    final String collectionName = simpleSearch.getCollectionName();

    ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices();
    RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices();
    RecordCollection collection = collectionServices.get(collectionName);
    List<String> elevatedQueries = elevateServices.getElevatedQueries(record, collection);
    queries.addAll(elevatedQueries);

    String titleKey = "queries";
    IModel titleModel = new StringResourceModel(titleKey, this, null);
    add(new Label("panelTitle", titleModel));

    queriesContainer = new WebMarkupContainer("queriesContainer");
    add(queriesContainer);
    queriesContainer.setOutputMarkupId(true);

    add(new AddQueryForm("addForm"));

    queriesContainer.add(new ListView("queries", queries) {
        @Override
        protected void populateItem(ListItem item) {
            final String query = (String) item.getModelObject();
            ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices();
            SimpleSearch simpleSearch = elevateServices.toSimpleSearch(query);
            item.add(new SimpleSearchQueryPanel("query", simpleSearch));

            item.add(new AjaxLink("deleteLink") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    queries.remove(query);
                    target.addComponent(queriesContainer);
                }

                @Override
                protected IAjaxCallDecorator getAjaxCallDecorator() {
                    return new AjaxCallDecorator() {
                        @Override
                        public CharSequence decorateScript(CharSequence script) {
                            String confirmMsg = getLocalizer().getString("confirmDelete",
                                    EditRecordElevatedQueriesPanel.this);
                            return "if (confirm('" + confirmMsg + "')) {" + script + "} else { return false; }";
                        }
                    };
                }
            });
        }
    });

    Form form = new Form("form");
    add(form);
    form.add(new AjaxButton("submitButton") {
        @Override
        protected void onSubmit(AjaxRequestTarget target, Form form) {
            ElevateServices elevateServices = ConstellioSpringUtils.getElevateServices();
            RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices();
            RecordCollection collection = collectionServices.get(collectionName);
            Record record = recordModel.getObject();
            List<String> originalQueries = elevateServices.getElevatedQueries(record, collection);
            for (String originalQuery : originalQueries) {
                if (!queries.contains(originalQuery)) {
                    SimpleSearch originalQuerySimpleSearch = elevateServices.toSimpleSearch(originalQuery);
                    elevateServices.cancelElevation(record, originalQuerySimpleSearch);
                }
            }

            for (String query : queries) {
                SimpleSearch querySimpleSearch = elevateServices.toSimpleSearch(query);
                if (!elevateServices.isElevated(record, querySimpleSearch)) {
                    elevateServices.elevate(record, querySimpleSearch);
                }
            }
            ModalWindow.closeCurrent(target);
        }
    });
    form.add(new AjaxButton("cancelButton") {
        @Override
        protected void onSubmit(AjaxRequestTarget target, Form form) {
            ModalWindow.closeCurrent(target);
        }
    }.setDefaultFormProcessing(false));
}

From source file:com.doculibre.constellio.wicket.panels.facets.CloudTagPanel.java

License:Open Source License

public CloudTagPanel(String id, final SearchableFacet searchableFacet, final FacetsDataProvider dataProvider) {
    super(id);//w ww . j ava  2s .  c  o  m

    cloudKeywordsModel = new LoadableDetachableModel() {
        @Override
        protected Object load() {
            // Ordre dcroissant de frquence
            List<CloudKeyword> cloudKeywords = SolrFacetUtils.getCloudKeywords(searchableFacet, dataProvider);
            if (!cloudKeywords.isEmpty()) {
                max = (int) cloudKeywords.get(0).getWeight();
                min = (int) cloudKeywords.get(cloudKeywords.size() - 1).getWeight();
            } else {
                max = min = 0;
            }
            // Ordre alphabtique
            Collections.sort(cloudKeywords);
            return cloudKeywords;
        }
    };

    add(new ListView("couldKeywords", cloudKeywordsModel) {
        @Override
        protected void populateItem(ListItem item) {
            final CloudKeyword cloudKeyword = (CloudKeyword) item.getModelObject();

            SimpleSearch simpleSearch = dataProvider.getSimpleSearch();
            SimpleSearch clone = simpleSearch.clone();
            clone.setCloudKeyword(cloudKeyword);
            //              ConstellioSession.get().addSearchHistory(clone);

            PageFactoryPlugin pageFactoryPlugin = PluginFactory.getPlugin(PageFactoryPlugin.class);
            Link addCloudKeywordLink = new BookmarkablePageLink("addCloudKeywordLink",
                    pageFactoryPlugin.getSearchResultsPage(), SearchResultsPage.getParameters(clone));
            item.add(addCloudKeywordLink);

            Label keywordLabel = new Label("keyword", cloudKeyword.getKeyword());
            addCloudKeywordLink.add(keywordLabel);
            keywordLabel.add(
                    new SimpleAttributeModifier("style", getLinkStyle(cloudKeyword.getWeight(), max, min)));
        }
    });
}

From source file:com.doculibre.constellio.wicket.panels.facets.CurrentSearchPanel.java

License:Open Source License

public CurrentSearchPanel(String id, final SimpleSearch simpleSearch) {
    super(id, new CompoundPropertyModel(simpleSearch));

    final SimpleSearch newSearch = new SimpleSearch();
    newSearch.setCollectionName(simpleSearch.getCollectionName());
    newSearch.setSingleSearchLocale(simpleSearch.getSingleSearchLocale());
    // ConstellioSession.get().addSearchHistory(simpleSearch);

    if (simpleSearch.getAdvancedSearchRule() != null && !simpleSearch.getAdvancedSearchRule().isValid()) {
        setVisible(false);/*from   w ww  .ja va2s . c  o  m*/
    }

    IModel queryModel = new LoadableDetachableModel() {

        @Override
        protected Object load() {
            if (simpleSearch.getAdvancedSearchRule() != null) {
                return new StringResourceModel("advancedSearchLabel", CurrentSearchPanel.this, null)
                        .getString();
            } else {
                return simpleSearch.getQuery();
            }
        }
    };

    add(new Label("query", queryModel) {
        @Override
        public boolean isVisible() {
            boolean valid = simpleSearch.isQueryValid();
            return valid && (simpleSearch.getQuery() != null || simpleSearch.getAdvancedSearchRule() != null);
        }
    });

    SimpleSearch cloneDeleteQuery = simpleSearch.clone();
    cloneDeleteQuery.setRefinedSearch(true);
    cloneDeleteQuery.setQuery(null);

    PageFactoryPlugin pageFactoryPlugin = PluginFactory.getPlugin(PageFactoryPlugin.class);
    Class<? extends Page> deleteQueryLinkPage;
    PageParameters deleteQueryLinkParams;
    if (StringUtils.isNotBlank(cloneDeleteQuery.getLuceneQuery())) {
        deleteQueryLinkPage = pageFactoryPlugin.getSearchResultsPage();
        deleteQueryLinkParams = SearchResultsPage.getParameters(cloneDeleteQuery);
    } else {
        deleteQueryLinkPage = pageFactoryPlugin.getSearchFormPage();
        deleteQueryLinkParams = SearchFormPage.getParameters(newSearch);
    }
    add(new BookmarkablePageLink("deleteQueryLink", deleteQueryLinkPage, deleteQueryLinkParams) {
        @Override
        public boolean isVisible() {
            return simpleSearch.isQueryValid() && simpleSearch.getQuery() != null
                    && simpleSearch.getAdvancedSearchRule() == null;
        }
    });

    WebMarkupContainer tagsSection = new WebMarkupContainer("tagsSection") {
        @Override
        public boolean isVisible() {
            return !simpleSearch.getTags().isEmpty();
        }
    };
    add(tagsSection);

    IModel tagsModel = new LoadableDetachableModel() {
        @Override
        protected Object load() {
            return new ArrayList<String>(simpleSearch.getTags());
        }
    };
    tagsSection.add(new ListView("tags", tagsModel) {
        @Override
        protected void populateItem(ListItem item) {
            final String tag = item.getModelObjectAsString();
            final SimpleSearch cloneRemoveTag = simpleSearch.clone();
            cloneRemoveTag.getTags().remove(tag);

            PageFactoryPlugin pageFactoryPlugin = PluginFactory.getPlugin(PageFactoryPlugin.class);
            Class<? extends Page> removeTagPage;
            PageParameters removeTagParams;
            if (StringUtils.isNotBlank(cloneRemoveTag.getLuceneQuery())) {
                removeTagPage = pageFactoryPlugin.getSearchResultsPage();
                removeTagParams = SearchResultsPage.getParameters(cloneRemoveTag);
            } else {
                removeTagPage = pageFactoryPlugin.getSearchFormPage();
                removeTagParams = SearchFormPage.getParameters(newSearch);
            }

            item.add(new Label("tag", tag));
            item.add(new BookmarkablePageLink("removeTagLink", removeTagPage, removeTagParams));
        }
    });

    WebMarkupContainer searchedFacetsSection = new WebMarkupContainer("searchedFacetsSection") {
        @Override
        public boolean isVisible() {
            return simpleSearch.isFacetApplied();
        }
    };
    add(searchedFacetsSection);

    IModel includedFacetValuesModel = new LoadableDetachableModel() {
        @Override
        protected Object load() {
            List<FacetValue> facetIncludedValues = new ArrayList<FacetValue>();
            List<SearchedFacet> searchedFacets = simpleSearch.getSearchedFacets();
            for (SearchedFacet searchedFacet : searchedFacets) {
                SearchableFacet searchableFacet = searchedFacet.getSearchableFacet();
                boolean isCluster = searchableFacet.isCluster();
                if (isCluster) {
                    int i = 0;
                    for (String includedValue : searchedFacet.getIncludedValues()) {
                        FacetValue facetValue = new FacetValue(searchableFacet, includedValue);
                        String valueToClusterLabel = searchedFacet.getClustersLabels().get(i);
                        facetValue.setValueToClusterLabel(valueToClusterLabel);
                        facetIncludedValues.add(facetValue);
                        i++;
                    }
                } else {
                    for (String includedValue : searchedFacet.getIncludedValues()) {
                        FacetValue facetValue = new FacetValue(searchableFacet, includedValue);
                        facetIncludedValues.add(facetValue);
                    }
                }
            }
            return facetIncludedValues;
        }
    };
    searchedFacetsSection.add(new ListView("includedFacetValuesModel", includedFacetValuesModel) {
        @Override
        protected void populateItem(ListItem item) {
            FacetValue facetValue = (FacetValue) item.getModelObject();

            RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices();
            String collectionName = simpleSearch.getCollectionName();
            RecordCollection collection = collectionServices.get(collectionName);
            Locale displayLocale = collection.getDisplayLocale(getLocale());

            StringBuffer facetValueLabel = new StringBuffer();
            facetValueLabel.append(facetValue.getSearchableFacet().getLabels().get(displayLocale));
            facetValueLabel.append(" : ");
            facetValueLabel.append(facetValue.getLabel(displayLocale));

            item.add(new Label("label", facetValueLabel.toString()));

            SimpleSearch cloneDeleteIncludedFacet = simpleSearch.clone();
            SearchableFacet searchableFacet = facetValue.getSearchableFacet();
            SearchedFacet searchedFacet = cloneDeleteIncludedFacet.getSearchedFacet(searchableFacet.getName());

            searchedFacet.getIncludedValues().remove(facetValue.getValue());

            if (searchedFacet.getIncludedValues().isEmpty() && searchedFacet.getExcludedValues().isEmpty()) {
                cloneDeleteIncludedFacet.getSearchedFacets().remove(searchedFacet);
            }

            // TODO FIXME
            //                FacetsPanel facetsPanel = (FacetsPanel) findParent(FacetsPanel.class);
            //                facetsPanel.resetFacet(searchableFacet);

            PageFactoryPlugin pageFactoryPlugin = PluginFactory.getPlugin(PageFactoryPlugin.class);
            Class<? extends Page> deleteIncludedFacetPage;
            PageParameters deleteIncludedFacetParams;
            if (StringUtils.isNotBlank(cloneDeleteIncludedFacet.getLuceneQuery())) {
                // ConstellioSession.get().addSearchHistory(clone);
                deleteIncludedFacetPage = pageFactoryPlugin.getSearchResultsPage();
                deleteIncludedFacetParams = SearchResultsPage.getParameters(cloneDeleteIncludedFacet);
            } else {
                deleteIncludedFacetPage = pageFactoryPlugin.getSearchFormPage();
                deleteIncludedFacetParams = SearchFormPage.getParameters(newSearch);
            }
            item.add(new BookmarkablePageLink("deleteIncludedFacetLink", deleteIncludedFacetPage,
                    deleteIncludedFacetParams));
        }
    });

    IModel excludedFacetValuesModel = new LoadableDetachableModel() {
        @Override
        protected Object load() {
            List<FacetValue> excludedFacetValues = new ArrayList<FacetValue>();
            List<SearchedFacet> searchedFacets = simpleSearch.getSearchedFacets();

            for (SearchedFacet searchedFacet : searchedFacets) {
                SearchableFacet searchableFacet = searchedFacet.getSearchableFacet();
                boolean isCluster = searchableFacet.isCluster();
                if (isCluster) {
                    int i = 0;
                    for (String excludedValue : searchedFacet.getExcludedValues()) {
                        FacetValue facetValue = new FacetValue(searchableFacet, excludedValue);
                        String valueToClusterLabel = searchedFacet.getClustersLabels().get(i);
                        facetValue.setValueToClusterLabel(valueToClusterLabel);
                        excludedFacetValues.add(facetValue);
                        i++;
                    }
                } else {
                    for (String excludedValue : searchedFacet.getExcludedValues()) {
                        excludedFacetValues.add(new FacetValue(searchableFacet, excludedValue));
                    }
                }
            }
            return excludedFacetValues;
        }
    };
    searchedFacetsSection.add(new ListView("excludedFacetValuesModel", excludedFacetValuesModel) {
        @Override
        protected void populateItem(ListItem item) {
            FacetValue facetValue = (FacetValue) item.getModelObject();

            RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices();
            String collectionName = simpleSearch.getCollectionName();
            RecordCollection collection = collectionServices.get(collectionName);
            Locale displayLocale = collection.getDisplayLocale(getLocale());

            StringBuffer facetValueLabel = new StringBuffer();
            facetValueLabel.append(facetValue.getSearchableFacet().getLabels().get(displayLocale));
            facetValueLabel.append(" : ");
            facetValueLabel.append(facetValue.getLabel(displayLocale));

            item.add(new Label("label", facetValueLabel.toString()));

            SimpleSearch cloneDeleteExcludedFacet = simpleSearch.clone();
            SearchableFacet searchableFacet = facetValue.getSearchableFacet();
            SearchedFacet searchedFacet = cloneDeleteExcludedFacet.getSearchedFacet(searchableFacet.getName());
            searchedFacet.getExcludedValues().remove(facetValue.getValue());

            // TODO FIXME
            //                FacetsPanel facetsPanel = (FacetsPanel) findParent(FacetsPanel.class);
            //                facetsPanel.resetFacet(searchableFacet);

            if (searchedFacet.getIncludedValues().isEmpty() && searchedFacet.getExcludedValues().isEmpty()) {
                cloneDeleteExcludedFacet.getSearchedFacets().remove(searchedFacet);
            }

            PageFactoryPlugin pageFactoryPlugin = PluginFactory.getPlugin(PageFactoryPlugin.class);
            Class<? extends Page> deleteExcludedFacetPage;
            PageParameters deleteExcludedFacetParams;
            if (StringUtils.isNotBlank(cloneDeleteExcludedFacet.getLuceneQuery())) {
                deleteExcludedFacetPage = pageFactoryPlugin.getSearchResultsPage();
                deleteExcludedFacetParams = SearchResultsPage.getParameters(cloneDeleteExcludedFacet);
            } else {
                deleteExcludedFacetPage = pageFactoryPlugin.getSearchFormPage();
                deleteExcludedFacetParams = SearchFormPage.getParameters(newSearch);
            }
            item.add(new BookmarkablePageLink("deleteExcludedFacetLink", deleteExcludedFacetPage,
                    deleteExcludedFacetParams));
        }
    });

    add(new Label("cloudKeyword.keyword") {
        @Override
        public boolean isVisible() {
            return simpleSearch.getCloudKeyword() != null;
        }
    });

    SimpleSearch cloneDeleteCloudKeyword = simpleSearch.clone();
    cloneDeleteCloudKeyword.setCloudKeyword(null);

    Class<? extends Page> deleteCloudQueryPage;
    PageParameters deleteCloudQueryParams;
    if (StringUtils.isNotBlank(cloneDeleteCloudKeyword.getLuceneQuery())) {
        deleteCloudQueryPage = pageFactoryPlugin.getSearchResultsPage();
        deleteCloudQueryParams = SearchResultsPage.getParameters(cloneDeleteCloudKeyword);
    } else {
        deleteCloudQueryPage = pageFactoryPlugin.getSearchFormPage();
        deleteCloudQueryParams = SearchFormPage.getParameters(newSearch);
    }
    add(new BookmarkablePageLink("deleteCloudKeywordLink", deleteCloudQueryPage, deleteCloudQueryParams) {
        @Override
        public boolean isVisible() {
            return simpleSearch.getCloudKeyword() != null;
        }
    });
}

From source file:com.doculibre.constellio.wicket.panels.facets.FacetsPanel.java

License:Open Source License

public FacetsPanel(String id, final SearchResultsDataProvider dataProvider) {
    super(id);/* w  w  w  .  ja  v  a 2 s.c o  m*/

    final SimpleSearch simpleSearch = dataProvider.getSimpleSearch();
    //        facetsDataProvider = new FacetsDataProvider(simpleSearch, dataProvider.getResultsPerPage(), true,
    //            false);
    notIncludedFacetsDataProvider = new FacetsDataProvider(simpleSearch, dataProvider.getResultsPerPage(), true,
            true);
    facetsDataProvider = notIncludedFacetsDataProvider;

    add(new CollectionSearchFacetPanel("collectionSearchFacetPanel") {
        @Override
        public boolean isVisible() {
            SearchInterfaceConfigServices searchInterfaceConfigServices = ConstellioSpringUtils
                    .getSearchInterfaceConfigServices();
            SearchInterfaceConfig config = searchInterfaceConfigServices.get();
            return config.isShowCollectionsInResultFacets();
        }
    });
    add(new FacetFoldableSectionPanel("currentSearchPanel",
            new StringResourceModel("currentSearch", this, null), "currentSearch") {
        @Override
        protected Component newFoldableSection(String id) {
            return new CurrentSearchPanel(id, dataProvider.getSimpleSearch());
        }

        @Override
        protected String getTitleSectionStyleClass() {
            return "currentSearchSectionTitle";
        }
    });

    //It does nothing, except not hiding the facet column when there's nothing in it
    SearchInterfaceConfigServices searchInterfaceConfigServices = ConstellioSpringUtils
            .getSearchInterfaceConfigServices();
    SearchInterfaceConfig config = searchInterfaceConfigServices.get();
    add(new WebMarkupContainer("dontHideWhenEmptyPlaceHolder").setVisible(!config.isHideEmptyFacetColumn()));

    List<SearchableFacet> searchableFacets = SolrFacetUtils.getSearchableFacets(simpleSearch);

    facetListView = new ListView("searchableFacets", searchableFacets) {
        @Override
        protected void populateItem(ListItem item) {
            String id = "facetPanel";
            int index = item.getIndex();
            final SearchableFacet searchableFacet = (SearchableFacet) item.getModelObject();

            FacetFoldableSectionPanel foldableSectionPanel = new FacetFoldableSectionPanel(id,
                    new LoadableDetachableModel() {
                        @Override
                        protected Object load() {
                            RecordCollectionServices collectionServices = ConstellioSpringUtils
                                    .getRecordCollectionServices();
                            String collectionName = simpleSearch.getCollectionName();
                            RecordCollection collection = collectionServices.get(collectionName);
                            Locale displayLocale = collection.getDisplayLocale(getLocale());
                            return searchableFacet.getLabels().get(displayLocale);
                        }
                    }, searchableFacet) {
                @Override
                protected Component newFoldableSection(String id) {
                    Panel facetPanel;
                    if (searchableFacet.isCloudKeyword()) {
                        facetPanel = new CloudTagPanel(id, searchableFacet, facetsDataProvider);
                    } else if (searchableFacet.isCluster()) {
                        facetPanel = new FacetPanel(id, searchableFacet, facetsDataProvider,
                                notIncludedFacetsDataProvider);// new
                        // ClusterPanel(id,
                        // searchableFacet,
                        // facetsDataProvider);
                    } else {
                        facetPanel = new FacetPanel(id, searchableFacet, facetsDataProvider,
                                notIncludedFacetsDataProvider);
                    }
                    return facetPanel;
                }

                @Override
                public boolean isOpened() {
                    return Boolean.FALSE.equals(simpleSearch.isFacetFolded(searchableFacet.getName()));
                }

                @Override
                protected void onToggle(AjaxRequestTarget target) {
                    boolean folded = !Boolean.FALSE
                            .equals(simpleSearch.isFacetFolded(searchableFacet.getName()));
                    simpleSearch.setFacetFolded(searchableFacet.getName(), !folded);
                    super.onToggle(target);
                }
            };
            item.add(foldableSectionPanel);

            FacetDisplayPlugin facetDisplayPlugin = PluginFactory.getPlugin(FacetDisplayPlugin.class);
            Boolean facetFolded = simpleSearch.isFacetFolded(searchableFacet.getName());
            if (index == 0 && facetFolded == null) {
                if (facetDisplayPlugin == null || facetDisplayPlugin.isUnfoldedAtStart(searchableFacet)) {
                    simpleSearch.setFacetFolded(searchableFacet.getName(), Boolean.FALSE);
                }
            } else {
                Boolean readOpenCookie = foldableSectionPanel.readOpenCookie();
                if (readOpenCookie != null) {
                    simpleSearch.setFacetFolded(searchableFacet.getName(), !readOpenCookie);
                } else if (facetDisplayPlugin == null
                        || facetDisplayPlugin.isUnfoldedAtStart(searchableFacet)) {
                    simpleSearch.setFacetFolded(searchableFacet.getName(), Boolean.FALSE);
                }
            }
        }
    };
    facetListView.setReuseItems(true);
    add(facetListView);
}

From source file:com.doculibre.constellio.wicket.panels.results.DefaultSearchResultPanel.java

License:Open Source License

public DefaultSearchResultPanel(String id, SolrDocument doc, final SearchResultsDataProvider dataProvider) {
    super(id);/*from   w  w  w  .java  2 s . c  om*/

    RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices();
    RecordServices recordServices = ConstellioSpringUtils.getRecordServices();
    SearchInterfaceConfigServices searchInterfaceConfigServices = ConstellioSpringUtils
            .getSearchInterfaceConfigServices();

    String collectionName = dataProvider.getSimpleSearch().getCollectionName();

    RecordCollection collection = collectionServices.get(collectionName);
    Record record = recordServices.get(doc);
    if (record != null) {
        SearchInterfaceConfig searchInterfaceConfig = searchInterfaceConfigServices.get();

        IndexField uniqueKeyField = collection.getUniqueKeyIndexField();
        IndexField defaultSearchField = collection.getDefaultSearchIndexField();
        IndexField urlField = collection.getUrlIndexField();
        IndexField titleField = collection.getTitleIndexField();

        if (urlField == null) {
            urlField = uniqueKeyField;
        }
        if (titleField == null) {
            titleField = urlField;
        }

        final String recordURL = record.getUrl();
        final String displayURL;

        if (record.getDisplayUrl().startsWith("/get?file=")) {
            HttpServletRequest req = ((WebRequest) getRequest()).getHttpServletRequest();
            displayURL = ContextUrlUtils.getContextUrl(req) + record.getDisplayUrl();

        } else {
            displayURL = record.getDisplayUrl();
        }

        String title = record.getDisplayTitle();

        final String protocol = StringUtils.substringBefore(displayURL, ":");
        boolean linkEnabled = isLinkEnabled(protocol);

        // rcupration des champs highlight  partir de la cl unique
        // du document, dans le cas de Nutch c'est l'URL
        QueryResponse response = dataProvider.getQueryResponse();
        Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
        Map<String, List<String>> fieldsHighlighting = highlighting.get(recordURL);

        String titleHighlight = getTitleFromHighlight(titleField.getName(), fieldsHighlighting);
        if (titleHighlight != null) {
            title = titleHighlight;
        }

        String excerpt = null;
        String description = getDescription(record);
        String summary = getSummary(record);

        if (StringUtils.isNotBlank(description) && searchInterfaceConfig.isDescriptionAsExcerpt()) {
            excerpt = description;
        } else {
            excerpt = getExcerptFromHighlight(defaultSearchField.getName(), fieldsHighlighting);
            if (excerpt == null) {
                excerpt = description;
            }
        }

        toggleSummaryLink = new WebMarkupContainer("toggleSummaryLink");
        add(toggleSummaryLink);
        toggleSummaryLink.setVisible(StringUtils.isNotBlank(summary));
        toggleSummaryLink.add(new AttributeModifier("onclick", new LoadableDetachableModel() {
            @Override
            protected Object load() {
                return "toggleSearchResultSummary('" + summaryLabel.getMarkupId() + "')";
            }
        }));

        summaryLabel = new Label("summary", summary);
        add(summaryLabel);
        summaryLabel.setOutputMarkupId(true);
        summaryLabel.setVisible(StringUtils.isNotBlank(summary));

        ExternalLink titleLink;
        if (displayURL.startsWith("file://")) {
            HttpServletRequest req = ((WebRequest) getRequest()).getHttpServletRequest();
            String newDisplayURL = ContextUrlUtils.getContextUrl(req) + "app/getSmbFile?"
                    + SmbServletPage.RECORD_ID + "=" + record.getId() + "&" + SmbServletPage.COLLECTION + "="
                    + collectionName;
            titleLink = new ExternalLink("titleLink", newDisplayURL);
        } else {
            titleLink = new ExternalLink("titleLink", displayURL);
        }

        final RecordModel recordModel = new RecordModel(record);
        AttributeModifier computeClickAttributeModifier = new AttributeModifier("onmousedown", true,
                new LoadableDetachableModel() {
                    @Override
                    protected Object load() {
                        Record record = recordModel.getObject();
                        SimpleSearch simpleSearch = dataProvider.getSimpleSearch();
                        WebRequest webRequest = (WebRequest) RequestCycle.get().getRequest();
                        HttpServletRequest httpRequest = webRequest.getHttpServletRequest();
                        return ComputeSearchResultClickServlet.getCallbackJavascript(httpRequest, simpleSearch,
                                record);
                    }
                });
        titleLink.add(computeClickAttributeModifier);
        titleLink.setEnabled(linkEnabled);

        boolean resultsInNewWindow;
        PageParameters params = RequestCycle.get().getPageParameters();
        if (params != null && params.getString(POPUP_LINK) != null) {
            resultsInNewWindow = params.getBoolean(POPUP_LINK);
        } else {
            resultsInNewWindow = searchInterfaceConfig.isResultsInNewWindow();
        }
        titleLink.add(new SimpleAttributeModifier("target", resultsInNewWindow ? "_blank" : "_self"));

        // Add title
        title = StringUtils.remove(title, "\n");
        title = StringUtils.remove(title, "\r");
        if (StringUtils.isEmpty(title)) {
            title = StringUtils.defaultString(displayURL);
            title = StringUtils.substringAfterLast(title, "/");
            title = StringUtils.substringBefore(title, "?");
            try {
                title = URLDecoder.decode(title, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            if (title.length() > 120) {
                title = title.substring(0, 120) + " ...";
            }
        }

        Label titleLabel = new Label("title", title);
        titleLink.add(titleLabel.setEscapeModelStrings(false));
        add(titleLink);

        Label excerptLabel = new Label("excerpt", excerpt);
        add(excerptLabel.setEscapeModelStrings(false));
        // add(new ExternalLink("url", url,
        // url).add(computeClickAttributeModifier).setEnabled(linkEnabled));
        if (displayURL.startsWith("file://")) {
            // Creates a Windows path for file URLs
            String urlLabel = StringUtils.substringAfter(displayURL, "file:");
            urlLabel = StringUtils.stripStart(urlLabel, "/");
            urlLabel = "\\\\" + StringUtils.replace(urlLabel, "/", "\\");
            try {
                urlLabel = URLDecoder.decode(urlLabel, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            add(new Label("url", urlLabel));
        } else {
            add(new Label("url", displayURL));
        }

        final ReloadableEntityModel<RecordCollection> collectionModel = new ReloadableEntityModel<RecordCollection>(
                collection);
        add(new ListView("searchResultFields", new LoadableDetachableModel() {
            @Override
            protected Object load() {
                RecordCollection collection = collectionModel.getObject();
                return collection.getSearchResultFields();
            }

            /**
             * Detaches from the current request. Implement this method with
             * custom behavior, such as setting the model object to null.
             */
            protected void onDetach() {
                recordModel.detach();
                collectionModel.detach();
            }
        }) {
            @Override
            protected void populateItem(ListItem item) {
                SearchResultField searchResultField = (SearchResultField) item.getModelObject();
                IndexFieldServices indexFieldServices = ConstellioSpringUtils.getIndexFieldServices();
                Record record = recordModel.getObject();
                IndexField indexField = searchResultField.getIndexField();
                Locale locale = getLocale();
                String indexFieldTitle = indexField.getTitle(locale);
                if (StringUtils.isBlank(indexFieldTitle)) {
                    indexFieldTitle = indexField.getName();
                }
                StringBuffer fieldValueSb = new StringBuffer();
                List<Object> fieldValues = indexFieldServices.extractFieldValues(record, indexField);
                Map<String, String> defaultLabelledValues = indexFieldServices
                        .getDefaultLabelledValues(indexField, locale);
                for (Object fieldValue : fieldValues) {
                    if (fieldValueSb.length() > 0) {
                        fieldValueSb.append("\n");
                    }
                    String fieldValueLabel = indexField.getLabelledValue("" + fieldValue, locale);
                    if (fieldValueLabel == null) {
                        fieldValueLabel = defaultLabelledValues.get("" + fieldValue);
                    }
                    if (fieldValueLabel == null) {
                        fieldValueLabel = "" + fieldValue;
                    }
                    fieldValueSb.append(fieldValueLabel);
                }

                item.add(new Label("indexField", indexFieldTitle));
                item.add(new MultiLineLabel("indexFieldValue", fieldValueSb.toString()));
                item.setVisible(fieldValueSb.length() > 0);
            }

            @SuppressWarnings("unchecked")
            @Override
            public boolean isVisible() {
                boolean visible = super.isVisible();
                if (visible) {
                    List<SearchResultField> searchResultFields = (List<SearchResultField>) getModelObject();
                    visible = !searchResultFields.isEmpty();
                }
                return visible;
            }
        });

        // md5
        ConstellioSession session = ConstellioSession.get();
        ConstellioUser user = session.getUser();
        // TODO Provide access to unauthenticated users ?
        String md5 = "";
        if (user != null) {
            IntelliGIDServiceInfo intelligidServiceInfo = ConstellioSpringUtils.getIntelliGIDServiceInfo();
            if (intelligidServiceInfo != null) {
                Collection<Object> md5Coll = doc.getFieldValues(IndexField.MD5);
                if (md5Coll != null) {
                    for (Object md5Obj : md5Coll) {
                        try {
                            String md5Str = new String(Hex.encodeHex(Base64.decodeBase64(md5Obj.toString())));
                            InputStream is = HttpClientHelper
                                    .get(intelligidServiceInfo.getIntelligidUrl() + "/connector/checksum",
                                            "md5=" + URLEncoder.encode(md5Str, "ISO-8859-1"),
                                            "username=" + URLEncoder.encode(user.getUsername(), "ISO-8859-1"),
                                            "password=" + URLEncoder.encode(Base64.encodeBase64String(
                                                    ConstellioSession.get().getPassword().getBytes())),
                                            "ISO-8859-1");
                            try {
                                Document xmlDocument = new SAXReader().read(is);
                                Element root = xmlDocument.getRootElement();
                                for (Iterator<Element> it = root.elementIterator("fichier"); it.hasNext();) {
                                    Element fichier = it.next();
                                    String url = fichier.attributeValue("url");
                                    md5 += "<a href=\"" + url + "\">" + url + "</a> ";
                                }
                            } finally {
                                IOUtils.closeQuietly(is);
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
        Label md5Label = new Label("md5", md5) {
            public boolean isVisible() {
                boolean visible = super.isVisible();
                if (visible) {
                    visible = StringUtils.isNotBlank(this.getModelObjectAsString());
                }
                return visible;
            }
        };
        md5Label.setEscapeModelStrings(false);
        add(md5Label);

        add(new ElevatePanel("elevatePanel", record, dataProvider.getSimpleSearch()));
    } else {
        setVisible(false);
    }
}

From source file:com.doculibre.constellio.wicket.panels.results.MailDetailsPanel.java

License:Open Source License

public MailDetailsPanel(String id, final Email email) {
    super(id, new CompoundPropertyModel(email));

    add(new Label("froms").setEscapeModelStrings(false));

    String messageContentText = email.getMessageContentHtml();
    String text = email.getMessageContentText();
    //FIXME : hack car les fichiers textes attachs sont ajout comme contenu texte
    if (text.length() > messageContentText.length()) {
        messageContentText = text;//  w  ww.ja  va 2  s  .  co m
    }

    messageContentText = StringUtils.replace(messageContentText, ">>", "&gt;&gt;");
    messageContentText = StringUtils.replace(messageContentText, "\n>", "\n&gt;");
    messageContentText = StringUtils.replace(messageContentText, "\n", "\n<br />");

    //      String encodedString;
    //      try {
    //         encodedString = new String(messageContentText.getBytes(), email.getContentEncoding());
    //      } catch (UnsupportedEncodingException e) {
    //         // TODO Auto-generated catch block
    //         e.printStackTrace();
    //         encodedString = messageContentText;
    //      }
    //      add(new Label("messageContent", encodedString).setEscapeModelStrings(false));

    add(new Label("messageContent", messageContentText).setEscapeModelStrings(false));

    add(new ListView("linksList", email.getAttachments()) {
        @Override
        protected void populateItem(final ListItem item) {
            final Email.AttachmentClass element = (Email.AttachmentClass) item.getModelObject();

            final AJAXDownload download = new AJAXDownload() {
                @Override
                protected IResourceStream getResourceStream() {
                    return createResourceStream(element);
                }

                @Override
                protected String getFileName() {
                    return element.getAttachmentName();
                }

                private IResourceStream createResourceStream(final Email.AttachmentClass element) {
                    IResourceStream resourceStream = new IResourceStream() {
                        private Locale locale = null;
                        private InputStream inputStream = null;

                        @Override
                        public void close() throws IOException {
                            if (inputStream != null) {
                                IOUtils.closeQuietly(inputStream);
                            }
                        }

                        @Override
                        public String getContentType() {
                            return element.getAttachmentType();
                        }

                        @Override
                        public InputStream getInputStream() throws ResourceStreamNotFoundException {
                            if (inputStream == null) {
                                inputStream = new ByteArrayInputStream(element.getAttachmentContent());
                            }
                            return inputStream;
                        }

                        @Override
                        public Locale getLocale() {
                            return locale;
                        }

                        @Override
                        public long length() {
                            return ((Integer) element.getAttachmentContent().length).longValue();
                        }

                        @Override
                        public void setLocale(Locale locale) {
                            this.locale = locale;
                        }

                        @Override
                        public Time lastModifiedTime() {
                            // TODO Auto-generated method stub
                            return null;
                        }

                    };
                    return resourceStream;
                }
            };
            item.add(download);

            AjaxLink link;
            item.add(link = new AjaxLink("attachmentLinks") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    download.initiate(target);
                }
            });
            link.add(new Label("urlTitle", element.getAttachmentName()));

            /*Link link;
            add(link = new DownloadInputStreamLink("attachmentLinks",
                  new LoadableDetachableModel() {
             @Override
             protected Object load() {
                ByteArrayInputStream in = new ByteArrayInputStream(
                      element.getAttachmentContent());
                return in;
             }
                    
                  }, element.getAttachmentName(), element
                .getAttachmentType(),
                  ((Integer) element.getAttachmentContent().length)
                .longValue(), new Date()));
            link.add(new Label("urlTitle", element.getAttachmentName()));*/
            item.add(link);
        }
    });

    add(new Label("recipients").setEscapeModelStrings(false));

    //FIXME 1 by 1
    String flags = StringUtils.join(email.getFlags(), ", ");
    //FIXME i18n
    flags = StringUtils.replace(flags, "seen", getLocalizer().getString("seen", this));
    flags = StringUtils.replace(flags, "flagged", getLocalizer().getString("flagged", this));
    add(new Label("flags", flags).setEscapeModelStrings(false));

    //      add(new Label("folderNames").setEscapeModelStrings(false));
    add(new Label("receivedDate").setEscapeModelStrings(false));

}

From source file:com.doculibre.constellio.wicket.panels.results.MailSearchResultPanel.java

License:Open Source License

public MailSearchResultPanel(String id, final SolrDocument doc, final SearchResultsDataProvider dataProvider) {
    super(id);//from   w  w  w.ja v  a2 s .  co  m

    RecordServices recordServices = ConstellioSpringUtils.getRecordServices();
    RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices();
    final Long recordId = new Long(doc.getFieldValue(IndexField.RECORD_ID_FIELD).toString());
    final String collectionName = dataProvider.getSimpleSearch().getCollectionName();
    RecordCollection collection = collectionServices.get(collectionName);
    Record record = recordServices.get(recordId, collection);

    final IModel subjectModel = new LoadableDetachableModel() {
        @Override
        protected Object load() {
            RecordServices recordServices = ConstellioSpringUtils.getRecordServices();
            Record record = recordServices.get(doc);
            String subject = record.getDisplayTitle();
            if (StringUtils.isBlank(subject)) {
                subject = getLocalizer().getString("noSubject", MailSearchResultPanel.this);
            }
            if (subject.length() > 60) {
                subject = subject.substring(0, 60) + " ...";
            }
            return subject;
        }
    };

    // List<byte[]> attachmentContents = new ArrayList<byte[]>();
    // String messageContent = null;
    // for (RawContent raw : rawContents) {
    // byte[] bytes = raw.getContent();
    // if (messageContent == null) {
    // messageContent = new String(bytes);
    // } else {
    // attachmentContents.add(bytes);
    // }
    // System.out.println("partial content :" + new String(bytes));
    // }
    // System.out.println("content 1 :" + messageContent);

    // Description du document dans extrait:
    QueryResponse response = dataProvider.getQueryResponse();
    Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
    final String recordURL = record.getUrl();
    Map<String, List<String>> fieldsHighlighting = highlighting.get(recordURL);

    ConnectorInstance connectorInstance = record.getConnectorInstance();
    IndexField defaultSearchField = collection.getDefaultSearchIndexField();

    String excerpt = getExcerptFromHighlight(defaultSearchField.getName(), fieldsHighlighting);

    final ModalWindow detailsMailModal = new ModalWindow("detailsMailModal");
    detailsMailModal.setPageCreator(new PageCreator() {
        @Override
        public Page createPage() {
            return new BaseConstellioPage();
        }
    });
    add(detailsMailModal);
    detailsMailModal.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
    detailsMailModal.setCookieName("detailsMailModal");

    IModel modalTitleModel = subjectModel;
    detailsMailModal.setTitle(modalTitleModel);

    final String displayURL = (String) doc.getFieldValue(collection.getUrlIndexField().getName());

    emailModel = new LoadableDetachableModel() {
        @Override
        protected Object load() {
            RecordServices recordServices = ConstellioSpringUtils.getRecordServices();
            Record record = recordServices.get(doc);

            List<String> attachmentNames = record.getMetaContents(MailConnectorConstants.META_ATTACHMENTNAME);
            List<String> attachmentTypes = record.getMetaContents(MailConnectorConstants.META_ATTACHMENTTYPE);
            List<String> recipients = record.getMetaContents(MailConnectorConstants.META_RECIPIENTS);
            List<String> flags = record.getMetaContents(MailConnectorConstants.META_FLAGS);
            List<String> froms = record.getMetaContents(MailConnectorConstants.META_SENDER);
            // FIXME Hardcoded
            List<String> contentEncoding = record.getMetaContents("Content-Encoding");

            List<String> receivedDateList = record.getMetaContents(MailConnectorConstants.META_RECEIVEDDATE);

            // FIXME voir avec Vincent : exemple qui ne marche pas jobboom car mail contient que du html
            RawContentServices rawContentServices = ConstellioSpringUtils.getRawContentServices();
            List<RawContent> rawContents = rawContentServices.getRawContents(record);
            ParsedContent parsedContents = record.getParsedContent();

            Email email;
            if (rawContents.size() != 0) {
                byte[] content = rawContents.get(0).getContent();
                String tmpFilePath = ClasspathUtils.getCollectionsRootDir() + File.separator + "tmp.eml";
                try {
                    email = MailMessageUtils.toEmail(content, tmpFilePath);
                } catch (Exception e) {
                    System.out.println("Error in reading content of mail");
                    // le contenu n'a pas bien t lu correctement
                    email = new Email();
                    email.setMessageContentText(parsedContents.getContent());
                }
            } else {
                // le contenu n'a pas bien t lu correctement
                email = new Email();
                email.setMessageContentText(parsedContents.getContent());
            }

            email.setFlags(flags);

            // email.setMessageContentHtml(messageContentHtml);
            if (!receivedDateList.isEmpty()) {
                email.setReceivedDate(receivedDateList.get(0));
            }
            email.setRecipients(recipients);
            email.setSubject((String) subjectModel.getObject());
            email.setFroms(froms);
            // email.setLanguage(language);
            if (!contentEncoding.isEmpty()) {
                email.setContentEncoding(contentEncoding.get(0));
            }
            return email;
        }
    };

    final RecordModel recordModel = new RecordModel(record);
    AjaxLink detailsMailLink = new AjaxLink("detailsMailLink") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            Email email = (Email) emailModel.getObject();
            detailsMailModal.setContent(new MailDetailsPanel(detailsMailModal.getContentId(), email));
            detailsMailModal.show(target);
        }

        @Override
        protected IAjaxCallDecorator getAjaxCallDecorator() {
            return new AjaxCallDecorator() {
                @Override
                public CharSequence decorateScript(CharSequence script) {
                    Record record = recordModel.getObject();
                    SimpleSearch simpleSearch = dataProvider.getSimpleSearch();
                    WebRequest webRequest = (WebRequest) RequestCycle.get().getRequest();
                    HttpServletRequest httpRequest = webRequest.getHttpServletRequest();
                    return script + ";" + ComputeSearchResultClickServlet.getCallbackJavascript(httpRequest,
                            simpleSearch, record);
                }
            };
        }
    };
    add(detailsMailLink);

    IModel recipientsLabelModel = new LoadableDetachableModel() {
        @Override
        protected Object load() {
            RecordServices recordServices = ConstellioSpringUtils.getRecordServices();
            Record record = recordServices.get(doc);
            List<String> recipients = record.getMetaContents(MailConnectorConstants.META_RECIPIENTS);
            return getLocalizer().getString("to", MailSearchResultPanel.this) + " : " + recipients;
        }
    };

    IModel receivedDateLabelModel = new LoadableDetachableModel() {
        @Override
        protected Object load() {
            RecordServices recordServices = ConstellioSpringUtils.getRecordServices();
            Record record = recordServices.get(doc);
            List<String> receivedDateList = record.getMetaContents(MailConnectorConstants.META_RECEIVEDDATE);
            String receivedDate;
            if (!receivedDateList.isEmpty()) {
                receivedDate = receivedDateList.get(0);
            } else {
                receivedDate = "";
            }
            return getLocalizer().getString("date", MailSearchResultPanel.this) + " : " + receivedDate;
        }
    };

    Label subjectLabel = new Label("subject", subjectModel);
    detailsMailLink.add(subjectLabel.setEscapeModelStrings(false));

    Label excerptLbl = new Label("messageContent", excerpt);
    add(excerptLbl.setEscapeModelStrings(false));
    add(new Label("recipient", recipientsLabelModel) {
        @Override
        public boolean isVisible() {
            boolean visible = super.isVisible();
            if (visible) {
                RecordCollectionServices collectionServices = ConstellioSpringUtils
                        .getRecordCollectionServices();
                RecordServices recordServices = ConstellioSpringUtils.getRecordServices();
                RecordCollection collection = collectionServices.get(collectionName);
                Record record = recordServices.get(recordId, collection);
                List<String> recipients = record.getMetaContents(MailConnectorConstants.META_RECIPIENTS);
                visible = !recipients.isEmpty();
            }
            return visible;
        }
    });
    // add(new Label("from", getLocalizer().getString("from", this) + " : " + froms));
    add(new Label("date", receivedDateLabelModel));
    add(new WebMarkupContainer("hasAttachmentsImg") {
        @Override
        public boolean isVisible() {
            boolean visible = super.isVisible();
            if (visible) {
                RecordServices recordServices = ConstellioSpringUtils.getRecordServices();
                Record record = recordServices.get(doc);
                List<String> attachmentNames = record
                        .getMetaContents(MailConnectorConstants.META_ATTACHMENTNAME);
                visible = !attachmentNames.isEmpty();
            }
            return visible;
        }
    });

    final ReloadableEntityModel<RecordCollection> collectionModel = new ReloadableEntityModel<RecordCollection>(
            collection);
    add(new ListView("searchResultFields", new LoadableDetachableModel() {
        @Override
        protected Object load() {
            RecordCollection collection = collectionModel.getObject();
            return collection.getSearchResultFields();
        }

        /**
         * Detaches from the current request. Implement this method with custom behavior, such as
         * setting the model object to null.
         */
        protected void onDetach() {
            recordModel.detach();
            collectionModel.detach();
        }
    }) {
        @Override
        protected void populateItem(ListItem item) {
            SearchResultField searchResultField = (SearchResultField) item.getModelObject();
            IndexFieldServices indexFieldServices = ConstellioSpringUtils.getIndexFieldServices();
            Record record = recordModel.getObject();
            IndexField indexField = searchResultField.getIndexField();
            Locale locale = getLocale();
            String indexFieldTitle = indexField.getTitle(locale);
            if (StringUtils.isBlank(indexFieldTitle)) {
                indexFieldTitle = indexField.getName();
            }
            StringBuffer fieldValueSb = new StringBuffer();
            List<Object> fieldValues = indexFieldServices.extractFieldValues(record, indexField);
            Map<String, String> defaultLabelledValues = indexFieldServices.getDefaultLabelledValues(indexField,
                    locale);
            for (Object fieldValue : fieldValues) {
                if (fieldValueSb.length() > 0) {
                    fieldValueSb.append("\n");
                }
                String fieldValueLabel = indexField.getLabelledValue("" + fieldValue, locale);
                if (fieldValueLabel == null) {
                    fieldValueLabel = defaultLabelledValues.get("" + fieldValue);
                }
                if (fieldValueLabel == null) {
                    fieldValueLabel = "" + fieldValue;
                }
                fieldValueSb.append(fieldValueLabel);
            }

            item.add(new Label("indexField", indexFieldTitle));
            item.add(new MultiLineLabel("indexFieldValue", fieldValueSb.toString()));
            item.setVisible(fieldValueSb.length() > 0);
        }

        @SuppressWarnings("unchecked")
        @Override
        public boolean isVisible() {
            boolean visible = super.isVisible();
            if (visible) {
                List<SearchResultField> searchResultFields = (List<SearchResultField>) getModelObject();
                visible = !searchResultFields.isEmpty();
            }
            return visible;
        }
    });

    add(new ElevatePanel("elevatePanel", record, dataProvider.getSimpleSearch()));
}

From source file:com.doculibre.constellio.wicket.panels.results.SearchResultsPanel.java

License:Open Source License

public SearchResultsPanel(String id, final SearchResultsDataProvider dataProvider) {
    super(id);//from  w w w  .j  av  a 2 s  . co m
    setOutputMarkupId(true);

    List<TransfertSearchResultsPlugin> plugins = PluginFactory.getPlugins(TransfertSearchResultsPlugin.class);

    this.transfertLink = new AjaxLink("transfertLink") {

        @Override
        public void onClick(AjaxRequestTarget target) {
            transfertPanel.setVisible(true);
            transfertLink.setVisible(false);
            transfertActive = true;
            target.addComponent(SearchResultsPanel.this);
        }
    };
    transfertLink.setVisible(!plugins.isEmpty() && ConstellioSession.get().getUser() != null
            && ConstellioSpringUtils.getIntelliGIDServiceInfo() != null);
    add(transfertLink);

    this.transfertPanel = new WebMarkupContainer("transfertPanel");
    transfertPanel.setOutputMarkupId(true);
    transfertPanel.setVisible(false);
    add(transfertPanel);

    IModel allNoneModel = new Model() {

        @Override
        public Object getObject() {
            return allNone;
        }

        @Override
        public void setObject(Object object) {
            allNone = (Boolean) object;
            if (allNone) {
                Iterator it = dataProvider.iterator(0, dataProvider.size());
                while (it.hasNext()) {
                    SolrDocument document = (SolrDocument) it.next();
                    dataProvider.getSimpleSearch().getSelectedResults()
                            .add(new Long(document.getFieldValue(IndexField.RECORD_ID_FIELD).toString()));
                }
            } else {
                dataProvider.getSimpleSearch().getSelectedResults().clear();
            }
        }

    };

    allNoneCheckbox = new AjaxCheckBox("allNoneCheckbox", allNoneModel) {

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            target.addComponent(SearchResultsPanel.this);
        }
    };
    allNoneCheckbox.setOutputMarkupId(true);
    transfertPanel.add(allNoneCheckbox);

    errorMessageLabel = new Label("errorMessageLabel", new PropertyModel(this, "errorMessage"));
    errorMessageLabel.setOutputMarkupId(true);
    transfertPanel.add(errorMessageLabel);

    transfertPanel.add(new ListView("transfertButtons", plugins) {

        @Override
        protected void populateItem(ListItem item) {
            final TransfertSearchResultsPlugin plugin = ((TransfertSearchResultsPlugin) item.getModelObject());
            AjaxLink link = new AjaxLink("launchTransfertLink") {

                @Override
                public void onClick(AjaxRequestTarget target) {
                    errorMessage = null;
                    List<Record> records = new ArrayList<Record>();
                    SimpleSearch search = dataProvider.getSimpleSearch();
                    RecordCollection collection = ConstellioSpringUtils.getRecordCollectionServices()
                            .get(search.getCollectionName());
                    for (Long recordId : search.getSelectedResults()) {
                        records.add(ConstellioSpringUtils.getRecordServices().get(recordId, collection));
                    }

                    if (!records.isEmpty()) {
                        doTransfert(plugin, target, records);
                    }

                }

                private void doTransfert(final TransfertSearchResultsPlugin plugin, AjaxRequestTarget target,
                        List<Record> records) {
                    List<Record> transferedRecords = new ArrayList<Record>();
                    List<String> ids = new ArrayList<String>();
                    for (Record record : records) {
                        try {
                            ids.add(plugin.transfert(record));
                            transferedRecords.add(record);
                        } catch (Throwable t) {
                            t.printStackTrace();
                            errorMessage = t.getMessage();
                            break;
                        }
                    }
                    if (errorMessage != null) {
                        try {
                            for (int i = 0; i < ids.size(); i++) {
                                plugin.cancel(transferedRecords.get(i), ids.get(i));
                            }
                        } catch (Throwable t) {
                            t.printStackTrace();
                        }
                    } else {
                        plugin.afterTransfert(transferedRecords, ids);
                    }
                    target.addComponent(errorMessageLabel);
                }
            };
            item.add(link);
            link.add(new Label("launchTransfertLabel", plugin.getLabelText()));
        }
    });

    this.dataView = new DataView(DATA_VIEW_ID, dataProvider, dataProvider.getResultsPerPage()) {
        @Override
        protected void populateItem(Item item) {
            SolrDocument doc = (SolrDocument) item.getModelObject();
            final Long id;
            RecordServices recordServices = ConstellioSpringUtils.getRecordServices();

            if (doc.getFieldValue(IndexField.RECORD_ID_FIELD) != null) {
                Record record = recordServices.get(doc);
                id = record.getId();
                if (record != null) {
                    ConnectorInstance connectorInstance = record.getConnectorInstance();

                    final ReloadableEntityModel<ConnectorInstance> connectorInstanceModel = new ReloadableEntityModel<ConnectorInstance>(
                            connectorInstance);
                    ConnectorType connectorType = connectorInstance.getConnectorType();
                    ResourceReference imageResourceReference = new ResourceReference(
                            "connectorType_" + connectorType.getId()) {
                        @Override
                        protected Resource newResource() {
                            ConnectorInstance connectorInstance = (ConnectorInstance) connectorInstanceModel
                                    .getObject();
                            ConnectorType connectorType = connectorInstance.getConnectorType();
                            Resource imageResource;
                            byte[] iconBytes = connectorType.getIconFileContent();
                            // Convert resource path to absolute path relative to base package
                            if (iconBytes != null) {
                                imageResource = new ByteArrayResource("image", iconBytes);
                            } else {
                                imageResource = PackageResource.get(ConnectorListPanel.class,
                                        "default_icon.gif");
                            }
                            return imageResource;
                        }
                    };

                    item.add(new NonCachingImage("icon", imageResourceReference) {
                        @Override
                        public void detachModels() {
                            connectorInstanceModel.detach();
                            super.detachModels();
                        }

                        @Override
                        public boolean isVisible() {
                            boolean visible = super.isVisible();
                            if (visible) {
                                SearchInterfaceConfigServices searchInterfaceConfigServices = ConstellioSpringUtils
                                        .getSearchInterfaceConfigServices();
                                SearchInterfaceConfig searchInterfaceConfig = searchInterfaceConfigServices
                                        .get();
                                visible = searchInterfaceConfig.isUseIconsInSearchResults();
                            }
                            return visible;
                        }
                    });
                } else {
                    item.setVisible(false);
                }
            } else {
                item.add(new WebMarkupContainer("icon").setVisible(false));
                id = null;
            }

            item.add(getSearchResultPanel("searchResultPanel", item, dataProvider));
            item.add(new SearchResultTaggingPanel("taggingPanel", doc, dataProvider));

            newRecordCheckbox(dataProvider, item, id);
        }

        private void newRecordCheckbox(final SearchResultsDataProvider dataProvider, Item item, final Long id) {
            IModel isChecked = new Model() {
                @Override
                public Object getObject() {
                    return id != null && dataProvider.getSimpleSearch().getSelectedResults().contains(id);
                }

                @Override
                public void setObject(Object object) {
                    if (id != null) {
                        Boolean state = (Boolean) object;
                        dataProvider.getSimpleSearch().getSelectedResults().remove(id);
                        if (state) {
                            dataProvider.getSimpleSearch().getSelectedResults().add(id);
                        } else {
                            allNone = false;
                        }
                    }
                }
            };

            item.add(new AjaxCheckBox("checkedResults", isChecked) {

                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                    target.addComponent(allNoneCheckbox);
                }

                @Override
                public boolean isVisible() {
                    return transfertActive;
                }

            });
        }
    };
    add(dataView);
    dataView.setOutputMarkupId(true);
    int page = dataProvider.getSimpleSearch().getPage();
    int pageCount = dataView.getPageCount();
    dataView.setCurrentPage(page == -1 ? pageCount - 1 : page);

    ConstellioPagingNavigator pagingNavigator = new ConstellioPagingNavigator("resultsPN", dataView);
    add(pagingNavigator);

    add(new WebMarkupContainer("noResultsMessage") {
        @Override
        public boolean isVisible() {
            return dataProvider.size() == 0;
        }
    });
}