Skip to content
Snippets Groups Projects
Commit 2fbf7757 authored by pkupczyk's avatar pkupczyk
Browse files

SP-362 / BIS-246: Show metaproject tags in Web GUI and allow editing them when editing an entity:

- sort metaprojects ignorecase
- operate on the current user's metaprojects only when editing an entity

SVN: 27495
parent f3b64d01
No related branches found
No related tags found
No related merge requests found
Showing
with 53 additions and 13 deletions
/*
* Copyright 2012 ETH Zuerich, CISD
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ch.systemsx.cisd.common.shared.basic.string;
import java.util.Comparator;
/**
* @author pkupczyk
*/
public class IgnoreCaseComparator implements Comparator<String>
{
@Override
public int compare(String o1, String o2)
{
return o1.compareToIgnoreCase(o2);
}
}
...@@ -21,6 +21,7 @@ import java.util.Collection; ...@@ -21,6 +21,7 @@ import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import ch.systemsx.cisd.common.shared.basic.string.IgnoreCaseComparator;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Metaproject; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Metaproject;
...@@ -55,7 +56,7 @@ public class MetaprojectArea extends MultilineItemsField ...@@ -55,7 +56,7 @@ public class MetaprojectArea extends MultilineItemsField
} }
} }
Collections.sort(names); Collections.sort(names, new IgnoreCaseComparator());
setItems(names); setItems(names);
} }
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
package ch.systemsx.cisd.openbis.generic.server.business.bo; package ch.systemsx.cisd.openbis.generic.server.business.bo;
import java.sql.Connection; import java.sql.Connection;
import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
...@@ -72,7 +73,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Identifier; ...@@ -72,7 +73,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Identifier;
import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE; import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE;
import ch.systemsx.cisd.openbis.generic.shared.dto.EntityPropertyPE; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityPropertyPE;
import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePE;
import ch.systemsx.cisd.openbis.generic.shared.dto.IHasMetaprojectsPE; import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityWithMetaprojects;
import ch.systemsx.cisd.openbis.generic.shared.dto.MetaprojectPE; import ch.systemsx.cisd.openbis.generic.shared.dto.MetaprojectPE;
import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
import ch.systemsx.cisd.openbis.generic.shared.dto.Session; import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
...@@ -200,7 +201,7 @@ abstract class AbstractBusinessObject implements IDAOFactory ...@@ -200,7 +201,7 @@ abstract class AbstractBusinessObject implements IDAOFactory
registrator, propertiesToUpdate); registrator, propertiesToUpdate);
} }
protected void setMetaprojects(IHasMetaprojectsPE entity, String[] metaprojectsOrNull) protected void setMetaprojects(IEntityWithMetaprojects entity, String[] metaprojectsOrNull)
{ {
if (entity == null) if (entity == null)
{ {
...@@ -211,7 +212,7 @@ abstract class AbstractBusinessObject implements IDAOFactory ...@@ -211,7 +212,7 @@ abstract class AbstractBusinessObject implements IDAOFactory
return; return;
} }
Set<MetaprojectPE> currentMetaprojects = entity.getMetaprojects(); PersonPE owner = getPersonDAO().tryFindPersonByUserId(session.getUserName());
Set<MetaprojectPE> metaprojects = new HashSet<MetaprojectPE>(); Set<MetaprojectPE> metaprojects = new HashSet<MetaprojectPE>();
for (String metaprojectsOrNullItem : metaprojectsOrNull) for (String metaprojectsOrNullItem : metaprojectsOrNull)
...@@ -227,7 +228,6 @@ abstract class AbstractBusinessObject implements IDAOFactory ...@@ -227,7 +228,6 @@ abstract class AbstractBusinessObject implements IDAOFactory
if (metaproject == null) if (metaproject == null)
{ {
PersonPE owner = getPersonDAO().tryFindPersonByUserId(session.getUserName());
metaproject = new MetaprojectPE(); metaproject = new MetaprojectPE();
metaproject.setName(metaprojectsOrNullItem); metaproject.setName(metaprojectsOrNullItem);
metaproject.setOwner(owner); metaproject.setOwner(owner);
...@@ -236,6 +236,9 @@ abstract class AbstractBusinessObject implements IDAOFactory ...@@ -236,6 +236,9 @@ abstract class AbstractBusinessObject implements IDAOFactory
metaprojects.add(metaproject); metaprojects.add(metaproject);
} }
Collection<MetaprojectPE> currentMetaprojects =
getMetaprojectDAO().listMetaprojectsForEntity(owner, entity);
Set<MetaprojectPE> metaprojectsToAdd = new HashSet<MetaprojectPE>(); Set<MetaprojectPE> metaprojectsToAdd = new HashSet<MetaprojectPE>();
Set<MetaprojectPE> metaprojectsToRemove = new HashSet<MetaprojectPE>(); Set<MetaprojectPE> metaprojectsToRemove = new HashSet<MetaprojectPE>();
......
...@@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess; ...@@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityInformationHolderDTO;
import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityInformationWithPropertiesHolder; import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityInformationWithPropertiesHolder;
import ch.systemsx.cisd.openbis.generic.shared.dto.MetaprojectAssignmentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.MetaprojectAssignmentPE;
import ch.systemsx.cisd.openbis.generic.shared.dto.MetaprojectPE; import ch.systemsx.cisd.openbis.generic.shared.dto.MetaprojectPE;
...@@ -50,7 +51,7 @@ public interface IMetaprojectDAO extends IGenericDAO<MetaprojectPE> ...@@ -50,7 +51,7 @@ public interface IMetaprojectDAO extends IGenericDAO<MetaprojectPE>
* Lists all metaprojects owned by given user, connected with given entity. * Lists all metaprojects owned by given user, connected with given entity.
*/ */
public Collection<MetaprojectPE> listMetaprojectsForEntity(PersonPE owner, public Collection<MetaprojectPE> listMetaprojectsForEntity(PersonPE owner,
IEntityInformationWithPropertiesHolder entity); IEntityInformationHolderDTO entity);
/** /**
* Lists all metaprojects owned by given user, connected with given entities. * Lists all metaprojects owned by given user, connected with given entities.
......
...@@ -35,6 +35,7 @@ import ch.systemsx.cisd.common.reflection.MethodUtils; ...@@ -35,6 +35,7 @@ import ch.systemsx.cisd.common.reflection.MethodUtils;
import ch.systemsx.cisd.openbis.generic.server.dataaccess.IMetaprojectDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IMetaprojectDAO;
import ch.systemsx.cisd.openbis.generic.shared.basic.MetaprojectName; import ch.systemsx.cisd.openbis.generic.shared.basic.MetaprojectName;
import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE; import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE;
import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityInformationHolderDTO;
import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityInformationWithPropertiesHolder; import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityInformationWithPropertiesHolder;
import ch.systemsx.cisd.openbis.generic.shared.dto.MetaprojectAssignmentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.MetaprojectAssignmentPE;
import ch.systemsx.cisd.openbis.generic.shared.dto.MetaprojectPE; import ch.systemsx.cisd.openbis.generic.shared.dto.MetaprojectPE;
...@@ -112,7 +113,7 @@ public class MetaprojectDAO extends AbstractGenericEntityDAO<MetaprojectPE> impl ...@@ -112,7 +113,7 @@ public class MetaprojectDAO extends AbstractGenericEntityDAO<MetaprojectPE> impl
@Override @Override
public Collection<MetaprojectPE> listMetaprojectsForEntity(PersonPE owner, public Collection<MetaprojectPE> listMetaprojectsForEntity(PersonPE owner,
IEntityInformationWithPropertiesHolder entity) IEntityInformationHolderDTO entity)
{ {
final DetachedCriteria criteria = DetachedCriteria.forClass(MetaprojectAssignmentPE.class); final DetachedCriteria criteria = DetachedCriteria.forClass(MetaprojectAssignmentPE.class);
criteria.createAlias("metaproject", "m"); criteria.createAlias("metaproject", "m");
......
...@@ -81,7 +81,7 @@ import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils; ...@@ -81,7 +81,7 @@ import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils;
@Indexed(index = "DataPE") @Indexed(index = "DataPE")
public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements public class DataPE extends AbstractIdAndCodeHolder<DataPE> implements
IEntityInformationWithPropertiesHolder, IMatchingEntity, IIdentifierHolder, IDeletablePE, IEntityInformationWithPropertiesHolder, IMatchingEntity, IIdentifierHolder, IDeletablePE,
IHasMetaprojectsPE IEntityWithMetaprojects
{ {
private static final long serialVersionUID = IServer.VERSION; private static final long serialVersionUID = IServer.VERSION;
......
...@@ -89,7 +89,7 @@ import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils; ...@@ -89,7 +89,7 @@ import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils;
{ AttachmentPE.class, ProjectPE.class }) { AttachmentPE.class, ProjectPE.class })
public class ExperimentPE extends AttachmentHolderPE implements public class ExperimentPE extends AttachmentHolderPE implements
IEntityInformationWithPropertiesHolder, IIdAndCodeHolder, Comparable<ExperimentPE>, IEntityInformationWithPropertiesHolder, IIdAndCodeHolder, Comparable<ExperimentPE>,
IModifierAndModificationDateBean, IMatchingEntity, IDeletablePE, IHasMetaprojectsPE, Serializable IModifierAndModificationDateBean, IMatchingEntity, IDeletablePE, IEntityWithMetaprojects, Serializable
{ {
private static final long serialVersionUID = IServer.VERSION; private static final long serialVersionUID = IServer.VERSION;
......
...@@ -21,7 +21,7 @@ import java.util.Set; ...@@ -21,7 +21,7 @@ import java.util.Set;
/** /**
* @author pkupczyk * @author pkupczyk
*/ */
public interface IHasMetaprojectsPE public interface IEntityWithMetaprojects extends IEntityInformationHolderDTO
{ {
public void addMetaproject(MetaprojectPE metaprojectPE); public void addMetaproject(MetaprojectPE metaprojectPE);
......
...@@ -76,7 +76,7 @@ import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils; ...@@ -76,7 +76,7 @@ import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils;
ColumnNames.DATABASE_INSTANCE_COLUMN })) ColumnNames.DATABASE_INSTANCE_COLUMN }))
@Indexed(index = "MaterialPE") @Indexed(index = "MaterialPE")
public class MaterialPE implements IIdAndCodeHolder, Comparable<MaterialPE>, public class MaterialPE implements IIdAndCodeHolder, Comparable<MaterialPE>,
IEntityInformationWithPropertiesHolder, Serializable, IMatchingEntity, IHasMetaprojectsPE IEntityInformationWithPropertiesHolder, Serializable, IMatchingEntity, IEntityWithMetaprojects
{ {
private static final long serialVersionUID = IServer.VERSION; private static final long serialVersionUID = IServer.VERSION;
......
...@@ -87,7 +87,7 @@ import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils; ...@@ -87,7 +87,7 @@ import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils;
+ " IS NULL AND " + ColumnNames.SPACE_COLUMN + " IS NOT NULL)") + " IS NULL AND " + ColumnNames.SPACE_COLUMN + " IS NOT NULL)")
@Indexed(index = "SamplePE") @Indexed(index = "SamplePE")
public class SamplePE extends AttachmentHolderPE implements IIdAndCodeHolder, Comparable<SamplePE>, public class SamplePE extends AttachmentHolderPE implements IIdAndCodeHolder, Comparable<SamplePE>,
IEntityInformationWithPropertiesHolder, IMatchingEntity, IDeletablePE, IHasMetaprojectsPE, IEntityInformationWithPropertiesHolder, IMatchingEntity, IDeletablePE, IEntityWithMetaprojects,
Serializable Serializable
{ {
private static final long serialVersionUID = IServer.VERSION; private static final long serialVersionUID = IServer.VERSION;
......
...@@ -22,6 +22,7 @@ import java.util.Collections; ...@@ -22,6 +22,7 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import ch.systemsx.cisd.common.shared.basic.string.IgnoreCaseComparator;
import ch.systemsx.cisd.common.shared.basic.string.StringUtils; import ch.systemsx.cisd.common.shared.basic.string.StringUtils;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
...@@ -68,7 +69,7 @@ public class PropertiesPanelUtils ...@@ -68,7 +69,7 @@ public class PropertiesPanelUtils
names[index++] = metaproject.getName(); names[index++] = metaproject.getName();
} }
Arrays.sort(names); Arrays.sort(names, new IgnoreCaseComparator());
properties properties
.put(viewContext.getMessage(Dict.METAPROJECTS), StringUtils.join(names, ", ")); .put(viewContext.getMessage(Dict.METAPROJECTS), StringUtils.join(names, ", "));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment