Java tutorial
/** * Copyright (c) 2012, 2013 Fraunhofer Institute FOKUS * * This file is part of Open Data Platform. * * Open Data Platform is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * Open Data Plaform is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * You should have received a copy of the GNU Affero General Public License * along with Open Data Platform. If not, see <http://www.gnu.org/licenses/agpl-3.0>. */ package de.fhg.fokus.odp.portal.managedatasets.controller; import java.io.IOException; import java.io.Serializable; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Properties; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import javax.faces.event.AjaxBehaviorEvent; import javax.faces.event.ValueChangeEvent; import javax.mail.MessagingException; import javax.portlet.PortletRequest; import org.apache.commons.io.FilenameUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.liferay.faces.bridge.component.HtmlInputFile; import com.liferay.faces.portal.context.LiferayFacesContext; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.language.LanguageUtil; import com.liferay.portal.kernel.util.PropsUtil; import com.liferay.portal.model.Layout; import com.liferay.portal.model.Role; import com.liferay.portal.service.RoleLocalServiceUtil; import com.liferay.portal.theme.ThemeDisplay; import de.fhg.fokus.odp.portal.managedatasets.utils.CSVXMLFileUtils; import de.fhg.fokus.odp.portal.managedatasets.utils.ImageGalleryUtils; import de.fhg.fokus.odp.portal.managedatasets.utils.MailUtils; import de.fhg.fokus.odp.portal.managedatasets.utils.WarFileUtils; import de.fhg.fokus.odp.registry.ODRClient; import de.fhg.fokus.odp.registry.ckan.impl.LicenceImpl; import de.fhg.fokus.odp.registry.ckan.json.LicenceBean; import de.fhg.fokus.odp.registry.model.Application; import de.fhg.fokus.odp.registry.model.Category; import de.fhg.fokus.odp.registry.model.Contact; import de.fhg.fokus.odp.registry.model.GeoGranularityEnumType; import de.fhg.fokus.odp.registry.model.Licence; import de.fhg.fokus.odp.registry.model.Metadata; import de.fhg.fokus.odp.registry.model.MetadataEnumType; import de.fhg.fokus.odp.registry.model.Resource; import de.fhg.fokus.odp.registry.model.RoleEnumType; import de.fhg.fokus.odp.registry.model.SectorEnumType; import de.fhg.fokus.odp.registry.model.Tag; import de.fhg.fokus.odp.registry.model.TemporalGranularityEnumType; import de.fhg.fokus.odp.registry.model.exception.OpenDataRegistryException; import de.fhg.fokus.odp.spi.OpenDataRegistry; // TODO: Auto-generated Javadoc /** * creation and editing for metadata of datasets, documents and apps. The * controller class of view.xhtlm. Used to control all actions regarding the * * @author Benjamin Dittwald, Fraunhofer FOKUS * */ @ManagedBean(name = "manageController") @ViewScoped public class ManageController implements Serializable { /** The Constant serialVersionUID. */ private static final long serialVersionUID = 1L; private static final Logger log = LoggerFactory.getLogger(ManageController.class); /** * The count of the configuration property for the category.max.choose.warn. */ private static final String PROP_CATEGORY_MAX_CHOOSE_WARN = "category.max.choose.warn"; /** The odr client. */ private ODRClient odrClient; /** The current user. */ @ManagedProperty("#{currentUser}") private CurrentUser currentUser; /** The metadata controller. */ @ManagedProperty("#{metadataController}") private MetadataController metadataController; /** The logger. */ private final Logger LOG = LoggerFactory.getLogger(getClass()); /** The licences. */ private List<Licence> licences; /** The categories. */ private List<Category> categories; /** The sectors. */ private List<SectorEnumType> sectors; /** The geo granularities. */ private List<GeoGranularityEnumType> geoGranularities; /** The temporal granularity enum types. */ private List<TemporalGranularityEnumType> temporalGranularityEnumTypes; /** The selected categories. */ private List<String> selectedCategories; /** The selected many categories. */ private List<String> selectedManyCategories; /** The selected tags. */ private List<String> selectedTags; /** The caption. */ private String caption; /** The selected licence. */ private String selectedLicence; /** The unknown licence. */ private boolean unknownLicence = false; /** The unknown licence text. */ private String unknownLicenceText; /** The unknown licence url. */ private String unknownLicenceUrl; /** The metadata type. */ private String metadataType; /** The edit mode. */ private boolean editMode; /** The redakteur. */ private boolean redakteur; /** The used dataset uris. */ private List<String> usedDatasetUris; /** The current used dataset uri. */ private String currentUsedDatasetUri; /** The author. */ private Contact author; /** The maintainer. */ private Contact maintainer; /** The distributor. */ private Contact distributor; /** The date pattern. */ public final static String DATE_PATTERN = "dd.MM.yyyy"; /** The app image. */ private transient HtmlInputFile appImage; /** The submitquestion. */ private String submitquestion; /** The war file. */ private transient HtmlInputFile uploadWar; /** The csv or xml file. */ private transient HtmlInputFile uploadCSVXML; /** * Inits the. * */ @PostConstruct private void init() { LiferayFacesContext lfc = LiferayFacesContext.getInstance(); PortletRequest request = (PortletRequest) lfc.getExternalContext().getRequest(); ThemeDisplay td = lfc.getThemeDisplay(); Properties props = new Properties(); if (metadataController.getMetadata().getType().equals(MetadataEnumType.APPLICATION)) { props.setProperty("ckan.authorization.key", PropsUtil.get("authenticationKeyApps")); } else { props.setProperty("ckan.authorization.key", PropsUtil.get("authenticationKey")); } props.setProperty("ckan.url", PropsUtil.get("cKANurl")); LOG.debug("odRClient props:" + props.toString()); odrClient = OpenDataRegistry.getClient(); odrClient.init(props); redakteur = false; try { for (Role role : RoleLocalServiceUtil.getUserRoles(td.getUserId())) { if (role.getName().equals("Redakteur") && RoleLocalServiceUtil.hasUserRole(role.getRoleId(), td.getUserId())) { redakteur = true; } } } catch (SystemException e) { LOG.error(e.getMessage(), e); } selectedTags = new ArrayList<String>(); selectedCategories = new ArrayList<String>(); selectedManyCategories = new ArrayList<String>(); licences = new ArrayList<Licence>(); /* * Sets caption according to create/edit metadata for * dataset/app/document */ if (metadataController.getMetadata().getTitle() == null || metadataController.getMetadata().getTitle().isEmpty()) { /* * Create */ author = metadataController.getMetadata().newContact(RoleEnumType.AUTHOR); maintainer = metadataController.getMetadata().newContact(RoleEnumType.MAINTAINER); distributor = metadataController.getMetadata().newContact(RoleEnumType.DISTRIBUTOR); editMode = false; LicenceBean lb = new LicenceBean(); Licence emptyLicence = new LicenceImpl(lb); metadataController.getMetadata().setLicence(emptyLicence); emptyLicence.setTitle(LanguageUtil.get(request.getLocale(), "od.licence.select")); licences.add(emptyLicence); if (metadataController.getMetadata().getType().equals(MetadataEnumType.DATASET) || metadataController.getMetadata().getType().equals(MetadataEnumType.UNKNOWN)) { metadataController.getMetadata().newResource(); caption = LanguageUtil.get(request.getLocale(), "od.create.metadata.data"); submitquestion = LanguageUtil.get(request.getLocale(), "od.create.metadata.data.submit"); metadataType = "dataset"; } else if (metadataController.getMetadata().getType().equals(MetadataEnumType.APPLICATION)) { caption = LanguageUtil.get(request.getLocale(), "od.create.metadata.app"); submitquestion = LanguageUtil.get(request.getLocale(), "od.create.metadata.app.submit"); metadataType = "app"; usedDatasetUris = new ArrayList<String>(); } else if (metadataController.getMetadata().getType().equals(MetadataEnumType.DOCUMENT)) { metadataController.getMetadata().newResource(); caption = LanguageUtil.get(request.getLocale(), "od.create.metadata.document"); submitquestion = LanguageUtil.get(request.getLocale(), "od.create.metadata.document.submit"); metadataType = "document"; } } else { /* * Edit */ try { for (Contact contact : metadataController.getMetadata().getContacts()) { if (contact.getRole().equals(RoleEnumType.AUTHOR)) { author = contact; } else if (contact.getRole().equals(RoleEnumType.MAINTAINER)) { maintainer = contact; } else if (contact.getRole().equals(RoleEnumType.DISTRIBUTOR)) { distributor = contact; } else if (contact.getRole().equals(RoleEnumType.PUBLISHER)) { LOG.info("Handle metadata contact PUBLISHER [" + contact.getName() + "] now as AUTHOR"); } } } catch (OpenDataRegistryException e) { LOG.error("Contact role", e); } finally { metadataController.getMetadata().getContacts().clear(); } if (author == null) { author = metadataController.getMetadata().newContact(RoleEnumType.AUTHOR); } if (maintainer == null) { maintainer = metadataController.getMetadata().newContact(RoleEnumType.MAINTAINER); } if (distributor == null) { distributor = metadataController.getMetadata().newContact(RoleEnumType.DISTRIBUTOR); } editMode = true; selectedLicence = metadataController.getMetadata().getLicence().getName(); unknownLicenceText = metadataController.getMetadata().getLicence().getTitle(); unknownLicenceUrl = metadataController.getMetadata().getLicence().getUrl(); for (Tag t : metadataController.getMetadata().getTags()) { selectedTags.add(t.getName()); } for (Category c : metadataController.getMetadata().getCategories()) { selectedCategories.add(c.getName()); selectedManyCategories.add(c.getName()); } submitquestion = LanguageUtil.get(request.getLocale(), "od.edit.any.data.save.changes"); if (metadataController.getMetadata().getType().equals(MetadataEnumType.DATASET) || metadataController.getMetadata().getType().equals(MetadataEnumType.UNKNOWN)) { caption = LanguageUtil.get(request.getLocale(), "od.edit.metadata.data"); metadataType = "dataset"; } else if (metadataController.getMetadata().getType().equals(MetadataEnumType.APPLICATION)) { caption = LanguageUtil.get(request.getLocale(), "od.edit.metadata.app"); metadataType = "app"; usedDatasetUris = ((Application) metadataController.getMetadata()).getUsedDatasets(); if (((Application) metadataController.getMetadata()).getUsedDatasets().size() < 1) { } } else if (metadataController.getMetadata().getType().equals(MetadataEnumType.DOCUMENT)) { caption = LanguageUtil.get(request.getLocale(), "od.edit.metadata.document"); metadataType = "document"; } unknownLicence = unknownLicence(metadataController.getMetadata().getLicence().getName()); } /* * Fill licences accordingly to the metadata type: dataset, app, * document */ if (metadataController.getMetadata().getType().equals(MetadataEnumType.DATASET) || metadataController.getMetadata().getType().equals(MetadataEnumType.UNKNOWN)) { for (Licence licence : odrClient.listLicenses()) { if (licence.isDomainData()) { licences.add(licence); } } } else if (metadataController.getMetadata().getType().equals(MetadataEnumType.APPLICATION)) { for (Licence licence : odrClient.listLicenses()) { if (licence.isDomainSoftware()) { licences.add(licence); } } } else if (metadataController.getMetadata().getType().equals(MetadataEnumType.DOCUMENT)) { for (Licence licence : odrClient.listLicenses()) { if (licence.isDomainContent()) { licences.add(licence); } } } /* Mark restricted licences */ for (Licence licence : licences) { if (!licence.isOpen() && !licence.getTitle().equals(LanguageUtil.get(request.getLocale(), "od.licence.select"))) { licence.setTitle( LanguageUtil.get(request.getLocale(), "od.restricted").toUpperCase(request.getLocale()) + " - " + licence.getTitle()); } } categories = new ArrayList<Category>(); List<Category> cats = odrClient.listCategories(); for (Category c : cats) { if ("group".equals(c.getType())) { categories.add(c); } } sectors = new ArrayList<SectorEnumType>(); for (SectorEnumType sector : SectorEnumType.values()) { sectors.add(sector); } geoGranularities = new ArrayList<GeoGranularityEnumType>(); for (GeoGranularityEnumType geoType : GeoGranularityEnumType.values()) { geoGranularities.add(geoType); } temporalGranularityEnumTypes = new ArrayList<TemporalGranularityEnumType>(); for (TemporalGranularityEnumType t : TemporalGranularityEnumType.values()) { temporalGranularityEnumTypes.add(t); } } public void changeSelectedCategories(AjaxBehaviorEvent vcEvent) { selectedManyCategories = selectedCategories; /* * int maxCats; String maxCatsStr = * PropsUtil.get(PROP_CATEGORY_MAX_CHOOSE_WARN); try { maxCats = * Integer.parseInt(maxCatsStr); } catch (NumberFormatException e) { * maxCats = 2; } log.info("changeSelectedCategories:maxCats==" + * maxCats); if (selectedManyCategories.size() > maxCats) * FacesContext.getCurrentInstance() .addMessage( null, new * FacesMessage(FacesMessage.SEVERITY_WARN, "Sample warn message", * "Watch out for PrimeFaces!")); else { Iterator<FacesMessage> * msgIterator = FacesContext .getCurrentInstance().getMessages(); while * (msgIterator.hasNext()) { msgIterator.next(); msgIterator.remove(); } * } */ } // end of changeSelectedCategories /** * Submit. * * @return the string * @throws IOException */ @SuppressWarnings("deprecation") public String submit() { for (Licence l : licences) { if (selectedLicence.equals(l.getName())) { if (unknownLicence) { l.setTitle(unknownLicenceText); l.setUrl(unknownLicenceUrl); l.setOther(unknownLicenceText); } metadataController.getMetadata().setLicence(l); break; } } metadataController.getMetadata().getCategories().clear(); for (Category c : categories) { for (String cName : selectedManyCategories) { if (cName.equals(c.getName())) { metadataController.getMetadata().getCategories().add(c); } } } metadataController.getMetadata().getTags().clear(); for (String t : selectedTags) { Tag tag = metadataController.getMetadata().newTag(t); metadataController.getMetadata().getTags().add(tag); } metadataController.getMetadata().getContacts().clear(); metadataController.getMetadata().getContacts().add(author); metadataController.getMetadata().getContacts().add(maintainer); metadataController.getMetadata().getContacts().add(distributor); Contact publisher = author; metadataController.getMetadata().getContacts().add(publisher); LiferayFacesContext lfc = LiferayFacesContext.getInstance(); ThemeDisplay themeDisplay = lfc.getThemeDisplay(); String location = themeDisplay.getPortalURL(); Layout layout = themeDisplay.getLayout(); try { if (layout.isPublicLayout()) { location += themeDisplay.getPathFriendlyURLPublic(); } if (layout.hasScopeGroup()) { location += layout.getScopeGroup().getFriendlyURL(); } else { location += layout.getGroup().getFriendlyURL(); } // manage DATASET-uploads for CSV/XMLFiles only if (metadataController.getMetadata().getType().equals(MetadataEnumType.DATASET)) { // CSV/XMLFile -> Storage: url to receive csv or xml file from // storage try { Resource res4Sorage = metadataController.getMetadata().newResource(); res4Sorage.setUrl(CSVXMLFileUtils.uploadToStorage(uploadCSVXML.getUploadedFile()).toString()); res4Sorage.setDescription("REST API entry point"); res4Sorage.setFormat("rest"); } catch (Exception e) { LOG.error("Error on upload csv/xml to storage: {}", uploadCSVXML.getUploadedFile(), e.getMessage()); } // CSV/XMLFile -> Document Library: url to receive csv or xml // file from ckan as gemo resource try { Resource r = metadataController.getMetadata().newResource(); r.setUrl(CSVXMLFileUtils.uploadToDocmentLibrary(uploadCSVXML.getUploadedFile()).toString()); r.setDescription("CSV XML"); final String ext = FilenameUtils.getExtension(uploadCSVXML.getUploadedFile().getName()); r.setFormat(ext); } catch (Exception e) { LOG.error("Error csv/xml upload to document library: {}", uploadCSVXML.getUploadedFile(), e.getMessage()); } } // manage DATASET-uploads for WAR-File -> Document Library: url to // receive war file from ckan as gemo resource if (metadataController.getMetadata().getType().equals(MetadataEnumType.DOCUMENT)) { // WAR -> DOCUMENT LIBRARY Resource r = metadataController.getMetadata().newResource(); String pathToWarFile = null; try { pathToWarFile = WarFileUtils.uploadToDocmentLibrary(uploadWar.getUploadedFile()).toString(); LOG.debug("WarFileUtils added .war file to Liferay Document Library at:" + pathToWarFile); } catch (IOException e) { LOG.error("Error WAR-Upload to document library: {}", uploadWar.getUploadedFile(), e.getMessage()); e.printStackTrace(); } catch (PortalException e2) { e2.printStackTrace(); } catch (SystemException e3) { e3.printStackTrace(); } finally { if (pathToWarFile == null) pathToWarFile = "etc/mobility-data-cloud/mobility-services-binaries"; r.setUrl(pathToWarFile); r.setDescription("deployment"); r.setFormat("war"); } // WAR -> AUTO-DEPLOYMENT try { WarFileUtils.uploadToAutoDeployService(uploadWar.getUploadedFile()); } catch (Exception e) { LOG.error("Error WAR-Upload to document library: {}", uploadWar.getUploadedFile(), e.getMessage()); } } switch (metadataController.getMetadata().getType()) { case APPLICATION: location += "/apps"; try { metadataController.getMetadata().getImages() .add(ImageGalleryUtils.uploadImage(appImage.getUploadedFile()).toString()); } catch (URISyntaxException e) { // TODO: better errorhandling... LOG.error("App image URI. ", e.getMessage()); } catch (IOException e) { // TODO: better errorhandling... LOG.error("Error on storing image: {}", appImage.getUploadedFile(), e.getMessage()); } catch (NullPointerException e) { // TODO: better errorhandling... LOG.error("Error on storing image: {}", "[no image selected]", e.getMessage()); } ((Application) metadataController.getMetadata()).getUsedDatasets().clear(); /* Check and sort out empty URIs */ for (String uri : usedDatasetUris) { if (!uri.isEmpty()) { ((Application) metadataController.getMetadata()).getUsedDatasets().add(uri); } } break; case DOCUMENT: location += "/daten"; break; case UNKNOWN: location += "/suchen"; break; default: location += "/daten"; } if (editMode || !metadataController.getMetadata().getType().equals(MetadataEnumType.APPLICATION)) { location += "/-/details/" + odrClient.mungeTitleToName(metadataController.getMetadata().getTitle()); } } catch (PortalException e) { LOG.error(e.getMessage()); LOG.debug("Error on metadata create / edit submit.", e.getStackTrace()); } catch (SystemException e) { LOG.error(e.getMessage()); LOG.debug("Error on metadata create / edit submit.", e.getStackTrace()); } // to fix the empty resources error ###################### List<Resource> listOfResources = metadataController.getMetadata().getResources(); for (Iterator<Resource> iterator = listOfResources.iterator(); iterator.hasNext();) { Resource resource = iterator.next(); if (resource.getUrl() == null) { // Remove the current element from the iterator and the list. iterator.remove(); } } // to fix the empty resources error ###################### try { try { odrClient.persistMetadata(currentUser.getCurrentUser(), metadataController.getMetadata()); } catch (OpenDataRegistryException e) { // TODO: better errorhandling... LOG.error("Error on creating metadata: {}", metadataController.getMetadata().getName(), e.getMessage()); } if (!editMode && metadataController.getMetadata().getType().equals(MetadataEnumType.APPLICATION)) { Properties props = new Properties(); props.setProperty("ckan.authorization.key", PropsUtil.get("authenticationKey")); props.setProperty("ckan.url", PropsUtil.get("cKANurl")); ODRClient appOdrClient = OpenDataRegistry.getClient(); appOdrClient.init(props); Metadata newApp; try { newApp = appOdrClient.getMetadata(currentUser.getCurrentUser(), metadataController.getMetadata().getName()); newApp.setState("deleted"); appOdrClient.persistMetadata(currentUser.getCurrentUser(), newApp); MailUtils.sendMail(newApp); } catch (OpenDataRegistryException e) { // TODO: better errorhandling... LOG.error("Error on updating state of metadata to deleted: {}", metadataController.getMetadata().getName(), e.getMessage()); } catch (PortalException e) { LOG.error("Error creating app: {}\n{}", metadataController.getMetadata().getName(), e.getMessage()); } catch (SystemException e) { LOG.error("Error creating app: {}\n{}", metadataController.getMetadata().getName(), e.getMessage()); } catch (MessagingException e) { LOG.error("Error creating app: {}\n{}", metadataController.getMetadata().getName(), e.getMessage()); } } FacesContext.getCurrentInstance().getExternalContext().redirect(location); } catch (IOException e) { LOG.error(e.getMessage()); LOG.debug("Error ob metadata create / edit submit", e.getStackTrace()); } return null; } /** * Unknown licence. * * @param name * the name * @return true, if successful */ private boolean unknownLicence(String name) { boolean result; if (name.equals("other-open") || name.equals("other-closed") || name.equals("app_commercial") || name.equals("app_freeware") || name.equals("app_opensource")) { result = true; } else { result = false; } return result; } /** * Terms of use value change listener. * * @param e * the e */ public void termsOfUseValueChangeListener(ValueChangeEvent e) { String newLicence = (String) e.getNewValue(); unknownLicence = unknownLicence(newLicence); } /** * An autocomplete method for the resources file formats. Uses the * OD-Registrie's autoSuggest method. * * @param fragment * The fragment which should be completed * @return A List of autocomplete suggestions regarding the given fragment. */ public List<String> formatSuggest(String fragment) { List<String> results = new ArrayList<String>(); List<String> suggestions = odrClient.autoSuggestFormats(fragment); for (String suggestion : suggestions) { results.add(suggestion); } return results; } /** * An autocomplete method for the app used datasets. Uses the OD-Registrie's * autoSuggest method. * * @param fragment * the fragment * @return the list */ public List<String> metadataDatasetSuggest(String fragment) { List<String> results = new ArrayList<String>(); List<String> suggestions = odrClient.autoSuggestMetadata(fragment); for (String suggestion : suggestions) { results.add(suggestion); } return results; } /** * Adds the dataset uri. * * @return the string */ public String addDatasetURI() { usedDatasetUris.add(currentUsedDatasetUri); currentUsedDatasetUri = ""; return null; } /** * Removes the used dataset. * * @param uri * the uri * @return the string */ public String removeUsedDataset(String uri) { usedDatasetUris.remove(uri); return null; } /** * Adds a new empty resource to the resource list. This can be used to * create a new resource for the metadataController.getMetadata(). * * @return null */ public String addResource() { metadataController.getMetadata().newResource(); return null; } /** * Deletes a specific resource from the resource list. * * @param r * The resource which has to be deleted * @return null */ public String removeResource(Resource r) { metadataController.getMetadata().getResources().remove(r); return null; } /** * Gets the categories. * * @return the categories */ public List<Category> getCategories() { return categories; } /** * Sets the categories. * * @param categories * the new categories */ public void setCategories(List<Category> categories) { this.categories = categories; } /** * Gets the licenses. * * @return the licenses */ public List<Licence> getLicences() { return licences; } /** * Sets the licenses. * * @param licences * the new licences */ public void setLicences(List<Licence> licences) { this.licences = licences; } /** * Gets the caption. * * @return the caption */ public String getCaption() { return caption; } /** * Sets the caption. * * @param caption * the new caption */ public void setCaption(String caption) { this.caption = caption; } /** * Checks if is unknown licence. * * @return true, if is unknown licence */ public boolean isUnknownLicence() { return unknownLicence; } /** * Sets the unknown licence. * * @param unknownLicence * the new unknown licence */ public void setUnknownLicence(boolean unknownLicence) { this.unknownLicence = unknownLicence; } /** * Gets the geo granularities. * * @return the geo granularities */ public List<GeoGranularityEnumType> getGeoGranularities() { return geoGranularities; } /** * Sets the geo granularities. * * @param geoGranularities * the new geo granularities */ public void setGeoGranularities(List<GeoGranularityEnumType> geoGranularities) { this.geoGranularities = geoGranularities; } /** * Gets the selected licence. * * @return the selected licence */ public String getSelectedLicence() { return selectedLicence; } /** * Sets the selected licence. * * @param selectedLicence * the new selected licence */ public void setSelectedLicence(String selectedLicence) { this.selectedLicence = selectedLicence; } /** * Gets the selected categories. * * @return the selected categories */ public List<String> getSelectedCategories() { return selectedCategories; } /** * Sets the selected categories. * * @param selectedCategories * the new selected categories */ public void setSelectedCategories(List<String> selectedCategories) { this.selectedCategories = selectedCategories; } /** * Gets the selected tags. * * @return the selected tags */ public List<String> getSelectedTags() { return selectedTags; } /** * Sets the selected tags. * * @param selectedTags * the new selected tags */ public void setSelectedTags(List<String> selectedTags) { this.selectedTags = selectedTags; } /** * Gets the hidden. * * @return the hidden */ public boolean getHidden() { return "deleted".equals(metadataController.getMetadata().getState()); } /** * Sets the hidden. * * @param hidden * the new hidden */ public void setHidden(boolean hidden) { metadataController.getMetadata().setState(hidden ? "deleted" : "active"); } /** * Gets the metadata type. * * @return the metadata type */ public String getMetadataType() { return metadataType; } /** * Sets the metadata type. * * @param metadataType * the new metadata type */ public void setMetadataType(String metadataType) { this.metadataType = metadataType; } /** * Gets the temporal granularity enum types. * * @return the temporal granularity enum types */ public List<TemporalGranularityEnumType> getTemporalGranularityEnumTypes() { return temporalGranularityEnumTypes; } /** * Sets the temporal granularity enum types. * * @param temporalGranularityEnumTypes * the new temporal granularity enum types */ public void setTemporalGranularityEnumTypes(List<TemporalGranularityEnumType> temporalGranularityEnumTypes) { this.temporalGranularityEnumTypes = temporalGranularityEnumTypes; } /** * Gets the unknown licence text. * * @return the unknown licence text */ public String getUnknownLicenceText() { return unknownLicenceText; } /** * Sets the unknown licence text. * * @param unknownLicenceText * the new unknown licence text */ public void setUnknownLicenceText(String unknownLicenceText) { this.unknownLicenceText = unknownLicenceText; } /** * Checks if is edits the mode. * * @return true, if is edits the mode */ public boolean isEditMode() { return editMode; } /** * Sets the edits the mode. * * @param editMode * the new edits the mode */ public void setEditMode(boolean editMode) { this.editMode = editMode; } /** * Checks if is redakteur. * * @return true, if is redakteur */ public boolean isRedakteur() { return redakteur; } /** * Sets the redakteur. * * @param redakteur * the new redakteur */ public void setRedakteur(boolean redakteur) { this.redakteur = redakteur; } /** * Gets the sectors. * * @return the sectors */ public List<SectorEnumType> getSectors() { return sectors; } /** * Sets the sectors. * * @param sectors * the new sectors */ public void setSectors(List<SectorEnumType> sectors) { this.sectors = sectors; } /** * Gets the used dataset uris. * * @return the used dataset uris */ public List<String> getUsedDatasetUris() { return usedDatasetUris; } /** * Sets the used dataset uris. * * @param usedDatasetUris * the new used dataset uris */ public void setUsedDatasetUris(List<String> usedDatasetUris) { this.usedDatasetUris = usedDatasetUris; } /** * Gets the current used dataset uri. * * @return the current used dataset uri */ public String getCurrentUsedDatasetUri() { return currentUsedDatasetUri; } /** * Sets the current used dataset uri. * * @param currentUsedDatasetUri * the new current used dataset uri */ public void setCurrentUsedDatasetUri(String currentUsedDatasetUri) { this.currentUsedDatasetUri = currentUsedDatasetUri; } /** * Gets the author. * * @return the author */ public Contact getAuthor() { return author; } /** * Sets the author. * * @param author * the new author */ public void setAuthor(Contact author) { this.author = author; } /** * Gets the maintainer. * * @return the maintainer */ public Contact getMaintainer() { return maintainer; } /** * Sets the maintainer. * * @param maintainer * the new maintainer */ public void setMaintainer(Contact maintainer) { this.maintainer = maintainer; } /** * Gets the distributor. * * @return the distributor */ public Contact getDistributor() { return distributor; } /** * Sets the distributor. * * @param distributor * the new distributor */ public void setDistributor(Contact distributor) { this.distributor = distributor; } /** * Gets the date pattern. * * @return the date pattern */ public String getDATE_PATTERN() { return DATE_PATTERN; } /** * Sets the current user. * * @param currentUser * the new current user */ public void setCurrentUser(CurrentUser currentUser) { this.currentUser = currentUser; } /** * Sets the metadata controller. * * @param metadataController * the new metadata controller */ public void setMetadataController(MetadataController metadataController) { this.metadataController = metadataController; } /** * Gets the app image. * * @return the app image */ public HtmlInputFile getAppImage() { return appImage; } /** * Sets the app image. * * @param appImage * the new app image */ public void setAppImage(HtmlInputFile appImage) { this.appImage = appImage; } /** * Gets the submitquestion. * * @return the submitquestion */ public String getSubmitquestion() { return submitquestion; } /** * Sets the submitquestion. * * @param submitquestion * the new submitquestion */ public void setSubmitquestion(String submitquestion) { this.submitquestion = submitquestion; } /** * Gets the unknown licence url. * * @return the unknown licence url */ public String getUnknownLicenceUrl() { return unknownLicenceUrl; } /** * Sets the unknown licence url. * * @param unknownLicenceUrl * the new unknown licence url */ public void setUnknownLicenceUrl(String unknownLicenceUrl) { this.unknownLicenceUrl = unknownLicenceUrl; } /** * @return the uploadWar */ public HtmlInputFile getUploadWar() { return uploadWar; } /** * @param uploadWar * the uploadWar to set */ public void setUploadWar(HtmlInputFile uploadWar) { this.uploadWar = uploadWar; } /** * @return the uploadCSVXML */ public HtmlInputFile getUploadCSVXML() { return uploadCSVXML; } /** * @param uploadCSVXML * the uploadCSVXML to set */ public void setUploadCSVXML(HtmlInputFile uploadCSVXML) { this.uploadCSVXML = uploadCSVXML; } }