diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonBusinessObjectFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonBusinessObjectFactory.java index 98bcce0253860e08b466c1f080e4ada67eb24985..e220ade5f280a08bb8a7704e2d23224ba21c43c3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonBusinessObjectFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonBusinessObjectFactory.java @@ -32,7 +32,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.ExperimentBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.ExperimentTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.GridCustomColumnBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.GridCustomFilterBO; -import ch.systemsx.cisd.openbis.generic.server.business.bo.GroupBO; +import ch.systemsx.cisd.openbis.generic.server.business.bo.SpaceBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IAttachmentBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IAuthorizationGroupBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.ICommonBusinessObjectFactory; @@ -47,7 +47,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.IEntityTypePropertyTy import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.IGridCustomFilterOrColumnBO; -import ch.systemsx.cisd.openbis.generic.server.business.bo.IGroupBO; +import ch.systemsx.cisd.openbis.generic.server.business.bo.ISpaceBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IMaterialBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IMaterialTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.IProjectBO; @@ -107,9 +107,9 @@ public final class CommonBusinessObjectFactory extends AbstractBusinessObjectFac } @Override - public final IGroupBO createGroupBO(final Session session) + public final ISpaceBO createSpaceBO(final Session session) { - return new GroupBO(getDaoFactory(), session); + return new SpaceBO(getDaoFactory(), session); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java index 4ec94869c027cf775a46c2732b3c7792d3338b92..81cc91ce41ca51842ad65e3565b4a25c3b3dfb46 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java @@ -61,7 +61,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.IEntityTypePropertyTy import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.IGridCustomFilterOrColumnBO; -import ch.systemsx.cisd.openbis.generic.server.business.bo.IGroupBO; +import ch.systemsx.cisd.openbis.generic.server.business.bo.ISpaceBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IMaterialBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IMaterialTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.IProjectBO; @@ -361,7 +361,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt final String descriptionOrNull) { final Session session = getSession(sessionToken); - final IGroupBO groupBO = businessObjectFactory.createGroupBO(session); + final ISpaceBO groupBO = businessObjectFactory.createSpaceBO(session); groupBO.define(spaceCode, descriptionOrNull); groupBO.save(); } @@ -384,7 +384,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt assert updates != null : "Unspecified updates"; final Session session = getSession(sessionToken); - final IGroupBO groupBO = businessObjectFactory.createGroupBO(session); + final ISpaceBO groupBO = businessObjectFactory.createSpaceBO(session); groupBO.update(updates); } @@ -1422,7 +1422,7 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt public void deleteSpaces(String sessionToken, List<TechId> groupIds, String reason) { Session session = getSession(sessionToken); - IGroupBO groupBO = businessObjectFactory.createGroupBO(session); + ISpaceBO groupBO = businessObjectFactory.createSpaceBO(session); for (TechId id : groupIds) { groupBO.deleteByTechId(id, reason); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java index 84aa27b101e7f4ea14f5d86b2738db5283399d53..037b58e14471641296d3bebc95e403e4c52fc99c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java @@ -65,12 +65,12 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.IDataBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IDataSetTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentTable; -import ch.systemsx.cisd.openbis.generic.server.business.bo.IGroupBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IMaterialBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IProjectBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IRoleAssignmentTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.ISampleBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.ISampleTable; +import ch.systemsx.cisd.openbis.generic.server.business.bo.ISpaceBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.datasetlister.IDatasetLister; import ch.systemsx.cisd.openbis.generic.server.business.bo.fetchoptions.experimentlister.ExperimentLister; import ch.systemsx.cisd.openbis.generic.server.business.bo.materiallister.IMaterialLister; @@ -1288,14 +1288,14 @@ public class ETLService extends AbstractCommonServer<IETLLIMSService> implements { Session session = getSession(sessionToken); - IGroupBO groupBO = businessObjectFactory.createGroupBO(session); + ISpaceBO spaceBO = businessObjectFactory.createSpaceBO(session); GroupIdentifier identifier = new GroupIdentifier(spaceIdentifier.getDatabaseInstanceCode(), spaceIdentifier.getSpaceCode()); try { - groupBO.load(identifier); - return SpaceTranslator.translate(groupBO.getGroup()); + spaceBO.load(identifier); + return SpaceTranslator.translate(spaceBO.getSpace()); } catch (UserFailureException ufe) { // space does not exist @@ -1502,17 +1502,17 @@ public class ETLService extends AbstractCommonServer<IETLLIMSService> implements String registratorUserIdOrNull) { // create space - IGroupBO groupBO = businessObjectFactory.createGroupBO(session); + ISpaceBO groupBO = businessObjectFactory.createSpaceBO(session); groupBO.define(newSpace.getCode(), newSpace.getDescription()); if (registratorUserIdOrNull != null) { - groupBO.getGroup().setRegistrator( + groupBO.getSpace().setRegistrator( getOrCreatePerson(session.getSessionToken(), registratorUserIdOrNull)); } groupBO.save(); // create ADMIN role assignemnt - SpacePE space = groupBO.getGroup(); + SpacePE space = groupBO.getSpace(); if (newSpace.getSpaceAdminUserId() != null) { IRoleAssignmentTable roleTable = diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ICommonBusinessObjectFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ICommonBusinessObjectFactory.java index abed0522e86c000df2f6561bd9083b0b96f72eb1..8a31995d4f7812e8a7bb127feb6cdc05ca18f71e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ICommonBusinessObjectFactory.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ICommonBusinessObjectFactory.java @@ -32,7 +32,7 @@ public interface ICommonBusinessObjectFactory extends IAbstractBussinessObjectFa { public IAttachmentBO createAttachmentBO(final Session session); - public IGroupBO createGroupBO(final Session session); + public ISpaceBO createSpaceBO(final Session session); public IScriptBO createScriptBO(final Session session); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IGroupBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ISpaceBO.java similarity index 65% rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IGroupBO.java rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ISpaceBO.java index 2e828405cd5fcdb2fec2c87cb0ec005e0e8a44e6..e7c3957fe0da5cfa082a7d8a217fa0684d14199d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IGroupBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ISpaceBO.java @@ -20,49 +20,49 @@ import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISpaceUpdates; import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.GroupIdentifier; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier; /** - * Business object of a group. Holds an instance of {@link SpacePE}. + * Business object of a data space. Holds an instance of {@link SpacePE}. * * @author Christian Ribeaud */ -public interface IGroupBO extends IEntityBusinessObject +public interface ISpaceBO extends IEntityBusinessObject { /** - * Defines a new group of specified code for the home database instance. After invocation of + * Defines a new space of specified code for the home database instance. After invocation of * this method {@link IBusinessObject#save()} should be invoked to store the new group in the * <i>Data Access Layer</i>. * * @throws UserFailureException if <code>group</code> does already exist. */ - public void define(String groupCode, String descriptionOrNull) throws UserFailureException; + public void define(String spaceCode, String descriptionOrNull) throws UserFailureException; /** - * Loads a group described by identifier from Database Layer. + * Loads a space described by identifier from Database Layer. * * @throws UserFailureException if <code>groupIdentifier</code> does not describe existing * group. */ - public void load(GroupIdentifier groupIdentifier) throws UserFailureException; + public void load(SpaceIdentifier spaceIdentifier) throws UserFailureException; /** - * Returns the group or null. + * Returns the space or <code>null</code>. */ - public SpacePE getGroup() throws UserFailureException; + public SpacePE getSpace() throws UserFailureException; /** - * Updates the group. + * Updates the space. */ public void update(ISpaceUpdates updates); /** - * Deletes group for specified reason. + * Deletes space for specified reason. * - * @param groupId group technical identifier - * @throws UserFailureException if group with given technical identifier is not found. + * @param spaceId space technical identifier + * @throws UserFailureException if space with given technical identifier is not found. */ - public void deleteByTechId(TechId groupId, String reason); + public void deleteByTechId(TechId spaceId, String reason); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/GroupBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SpaceBO.java similarity index 68% rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/GroupBO.java rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SpaceBO.java index 0e43a317effbdb00e5ec503e5ad13ee48095d071..555cf8a9e37d3f08a824a83cb95518043bf77a2c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/GroupBO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SpaceBO.java @@ -36,19 +36,20 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.DatabaseInstanceIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.GroupIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.IdentifierHelper; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier; /** - * The only productive implementation of {@link IGroupBO}. We are using an interface here to keep + * The only productive implementation of {@link ISpaceBO}. We are using an interface here to keep * the system testable. * * @author Christian Ribeaud */ -public final class GroupBO extends AbstractBusinessObject implements IGroupBO +public final class SpaceBO extends AbstractBusinessObject implements ISpaceBO { - private SpacePE group; + private SpacePE space; - public GroupBO(final IDAOFactory daoFactory, final Session session) + public SpaceBO(final IDAOFactory daoFactory, final Session session) { super(daoFactory, session); } @@ -60,18 +61,18 @@ public final class GroupBO extends AbstractBusinessObject implements IGroupBO @Override public final void save() throws UserFailureException { - assert group != null : "Space not defined"; + assert space != null : "Space not defined"; try { - if (group.getDatabaseInstance().isOriginalSource() == false) + if (space.getDatabaseInstance().isOriginalSource() == false) { - throw new UserFailureException("Registration of space " + group + throw new UserFailureException("Registration of space " + space + " on a non-home database is not allowed."); } - getSpaceDAO().createSpace(group); + getSpaceDAO().createSpace(space); } catch (final DataAccessException e) { - throwException(e, "Space '" + IdentifierHelper.createGroupIdentifier(group) + "'"); + throwException(e, "Space '" + IdentifierHelper.createGroupIdentifier(space) + "'"); } } @@ -80,14 +81,14 @@ public final class GroupBO extends AbstractBusinessObject implements IGroupBO { loadDataByTechId(TechId.create(updates)); - group.setDescription(updates.getDescription()); + space.setDescription(updates.getDescription()); validateAndSave(); } private void validateAndSave() { - getSpaceDAO().validateAndSaveUpdatedEntity(group); + getSpaceDAO().validateAndSaveUpdatedEntity(space); } @Override @@ -95,40 +96,40 @@ public final class GroupBO extends AbstractBusinessObject implements IGroupBO throws UserFailureException { assert groupCode != null : "Unspecified space code."; - group = new SpacePE(); + space = new SpacePE(); final GroupIdentifier groupIdentifier = new GroupIdentifier(DatabaseInstanceIdentifier.HOME, groupCode); final DatabaseInstancePE databaseInstance = SpaceIdentifierHelper.getDatabaseInstance(groupIdentifier, this); - group.setDatabaseInstance(databaseInstance); - group.setCode(groupIdentifier.getSpaceCode()); - group.setDescription(descriptionOrNull); - group.setRegistrator(findPerson()); + space.setDatabaseInstance(databaseInstance); + space.setCode(groupIdentifier.getSpaceCode()); + space.setDescription(descriptionOrNull); + space.setRegistrator(findPerson()); } @Override - public SpacePE getGroup() throws UserFailureException + public SpacePE getSpace() throws UserFailureException { - return group; + return space; } @Override - public void load(final GroupIdentifier groupIdentifier) throws UserFailureException + public void load(final SpaceIdentifier spaceIdentifier) throws UserFailureException { - group = SpaceIdentifierHelper.tryGetSpace(groupIdentifier, session.tryGetPerson(), this); - if (group == null) + space = SpaceIdentifierHelper.tryGetSpace(spaceIdentifier, session.tryGetPerson(), this); + if (space == null) { throw new UserFailureException(String.format("Space '%s' does not exist.", - groupIdentifier)); + spaceIdentifier)); } } @Override - public void loadDataByTechId(TechId groupId) + public void loadDataByTechId(TechId spaceId) { try { - group = getSpaceDAO().getByTechId(groupId); + space = getSpaceDAO().getByTechId(spaceId); } catch (DataRetrievalFailureException exception) { throw new UserFailureException(exception.getMessage()); @@ -136,34 +137,34 @@ public final class GroupBO extends AbstractBusinessObject implements IGroupBO } @Override - public void deleteByTechId(TechId groupId, String reason) throws UserFailureException + public void deleteByTechId(TechId spaceId, String reason) throws UserFailureException { - loadDataByTechId(groupId); + loadDataByTechId(spaceId); try { - getSpaceDAO().delete(group); - getEventDAO().persist(createDeletionEvent(group, session.tryGetPerson(), reason)); + getSpaceDAO().delete(space); + getEventDAO().persist(createDeletionEvent(space, session.tryGetPerson(), reason)); } catch (final DataAccessException ex) { - throwException(ex, String.format("Space '%s'", group.getCode())); + throwException(ex, String.format("Space '%s'", space.getCode())); } } - public static EventPE createDeletionEvent(SpacePE group, PersonPE registrator, String reason) + public static EventPE createDeletionEvent(SpacePE space, PersonPE registrator, String reason) { EventPE event = new EventPE(); event.setEventType(EventType.DELETION); event.setEntityType(EntityType.SPACE); - event.setIdentifiers(Collections.singletonList(group.getCode())); - event.setDescription(getDeletionDescription(group)); + event.setIdentifiers(Collections.singletonList(space.getCode())); + event.setDescription(getDeletionDescription(space)); event.setReason(reason); event.setRegistrator(registrator); return event; } - private static String getDeletionDescription(SpacePE group) + private static String getDeletionDescription(SpacePE space) { - return String.format("%s", group.getCode()); + return String.format("%s", space.getCode()); } } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java index b326dece9c7076a81ace9c4a26df0ddcdb008edf..557b35d453ea27da82d6f370f993a7e5f8bdd08e 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java @@ -378,7 +378,7 @@ public final class CommonServerTest extends AbstractServerTestCase context.checking(new Expectations() { { - one(commonBusinessObjectFactory).createGroupBO(SESSION); + one(commonBusinessObjectFactory).createSpaceBO(SESSION); will(returnValue(groupBO)); one(groupBO).define(groupCode, description); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/GroupBOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SpaceBOTest.java similarity index 85% rename from openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/GroupBOTest.java rename to openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SpaceBOTest.java index 7bd0fab75a7395e4f578ee96e7d075874e0c38af..3e6775ed177bc379cad77134c40e7c2d7260a339 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/GroupBOTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/SpaceBOTest.java @@ -24,15 +24,15 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE; import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE; /** - * Test cases for corresponding {@link GroupBO} class. + * Test cases for corresponding {@link SpaceBO} class. * * @author Christian Ribeaud */ -public final class GroupBOTest extends AbstractBOTest +public final class SpaceBOTest extends AbstractBOTest { - private final GroupBO createGroupBO() + private final SpaceBO createSpaceBO() { - return new GroupBO(daoFactory, ManagerTestTool.EXAMPLE_SESSION); + return new SpaceBO(daoFactory, ManagerTestTool.EXAMPLE_SESSION); } @Test @@ -41,7 +41,7 @@ public final class GroupBOTest extends AbstractBOTest boolean fail = true; try { - createGroupBO().save(); + createSpaceBO().save(); } catch (final AssertionError ex) { fail = false; @@ -53,11 +53,11 @@ public final class GroupBOTest extends AbstractBOTest @Test public final void testDefineWithNullCode() { - final GroupBO groupBO = createGroupBO(); + final SpaceBO spaceBO = createSpaceBO(); boolean fail = true; try { - groupBO.define(null, null); + spaceBO.define(null, null); } catch (final AssertionError ex) { fail = false; @@ -68,7 +68,7 @@ public final class GroupBOTest extends AbstractBOTest @Test public final void testDefineAndSave() { - final GroupBO spaceBO = createGroupBO(); + final SpaceBO spaceBO = createSpaceBO(); final DatabaseInstancePE instance = new DatabaseInstancePE(); instance.setOriginalSource(true); final SpacePE groupDTO = new SpacePE(); diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java index afd7156800fc0189e3797b866d916c5b15aa9f61..ede4af9e3d2dc668c385b5f915f98e6561e5ad33 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/AbstractServerTestCase.java @@ -41,7 +41,7 @@ import ch.systemsx.cisd.openbis.generic.server.business.bo.IEntityTypeBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IEntityTypePropertyTypeBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IExperimentTable; -import ch.systemsx.cisd.openbis.generic.server.business.bo.IGroupBO; +import ch.systemsx.cisd.openbis.generic.server.business.bo.ISpaceBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IMaterialBO; import ch.systemsx.cisd.openbis.generic.server.business.bo.IMaterialTable; import ch.systemsx.cisd.openbis.generic.server.business.bo.IPropertyTypeBO; @@ -130,7 +130,7 @@ public abstract class AbstractServerTestCase extends AssertJUnit protected ISampleDAO sampleDAO; - protected IGroupBO groupBO; + protected ISpaceBO groupBO; protected ISampleBO sampleBO; @@ -234,7 +234,7 @@ public abstract class AbstractServerTestCase extends AssertJUnit hibernateSearchDAO = context.mock(IHibernateSearchDAO.class); entityOperationsLogDAO = context.mock(IEntityOperationsLogDAO.class); // BO - groupBO = context.mock(IGroupBO.class); + groupBO = context.mock(ISpaceBO.class); entityTypeBO = context.mock(IEntityTypeBO.class); sampleBO = context.mock(ISampleBO.class); materialBO = context.mock(IMaterialBO.class);