Skip to content
Snippets Groups Projects
Commit b8d6b7a1 authored by srosse's avatar srosse
Browse files

OO-1593: revert the custom identity mapping, too much side effect, it would...

OO-1593: revert the custom identity mapping, too much side effect, it would need a refactoring of the IdentityImpl mapping
parent 7f97226f
No related branches found
No related tags found
No related merge requests found
...@@ -23,7 +23,6 @@ import java.util.List; ...@@ -23,7 +23,6 @@ import java.util.List;
import org.olat.basesecurity.IdentityShort; import org.olat.basesecurity.IdentityShort;
import org.olat.core.id.Identity; import org.olat.core.id.Identity;
import org.olat.course.assessment.model.AssessmentEntryRow;
import org.olat.course.assessment.model.CourseStatistics; import org.olat.course.assessment.model.CourseStatistics;
import org.olat.course.assessment.model.SearchAssessedIdentityParams; import org.olat.course.assessment.model.SearchAssessedIdentityParams;
import org.olat.modules.assessment.AssessmentEntry; import org.olat.modules.assessment.AssessmentEntry;
...@@ -45,8 +44,6 @@ public interface AssessmentToolManager { ...@@ -45,8 +44,6 @@ public interface AssessmentToolManager {
public List<IdentityShort> getShortAssessedIdentities(Identity coach, SearchAssessedIdentityParams params, int maxResults); public List<IdentityShort> getShortAssessedIdentities(Identity coach, SearchAssessedIdentityParams params, int maxResults);
public List<AssessmentEntryRow> getAssessmentEntryRows(Identity coach, SearchAssessedIdentityParams params, AssessmentEntryStatus status);
public List<AssessmentEntry> getAssessmentEntries(Identity coach, SearchAssessedIdentityParams params, AssessmentEntryStatus status); public List<AssessmentEntry> getAssessmentEntries(Identity coach, SearchAssessedIdentityParams params, AssessmentEntryStatus status);
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
*/ */
package org.olat.course.assessment.manager; package org.olat.course.assessment.manager;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
...@@ -34,8 +33,6 @@ import org.olat.core.logging.OLog; ...@@ -34,8 +33,6 @@ import org.olat.core.logging.OLog;
import org.olat.core.logging.Tracing; import org.olat.core.logging.Tracing;
import org.olat.core.util.StringHelper; import org.olat.core.util.StringHelper;
import org.olat.course.assessment.AssessmentToolManager; import org.olat.course.assessment.AssessmentToolManager;
import org.olat.course.assessment.model.AssessedIdentity;
import org.olat.course.assessment.model.AssessmentEntryRow;
import org.olat.course.assessment.model.CourseStatistics; import org.olat.course.assessment.model.CourseStatistics;
import org.olat.course.assessment.model.SearchAssessedIdentityParams; import org.olat.course.assessment.model.SearchAssessedIdentityParams;
import org.olat.course.assessment.model.UserCourseInfosImpl; import org.olat.course.assessment.model.UserCourseInfosImpl;
...@@ -61,15 +58,6 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager { ...@@ -61,15 +58,6 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
@Autowired @Autowired
private DB dbInstance; private DB dbInstance;
public List<AssessedIdentity> getIdentities() {
StringBuilder sf = new StringBuilder();
sf.append("select ident from asidentity as ident");
return dbInstance.getCurrentEntityManager()
.createQuery(sf.toString(), AssessedIdentity.class)
.getResultList();
}
@Override @Override
public CourseStatistics getStatistics(Identity coach, SearchAssessedIdentityParams params) { public CourseStatistics getStatistics(Identity coach, SearchAssessedIdentityParams params) {
CourseStatistics entry = new CourseStatistics(); CourseStatistics entry = new CourseStatistics();
...@@ -395,90 +383,6 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager { ...@@ -395,90 +383,6 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
} }
} }
} }
@Override
public List<AssessmentEntryRow> getAssessmentEntryRows(Identity coach, SearchAssessedIdentityParams params, AssessmentEntryStatus status) {
StringBuilder sb = new StringBuilder();
sb.append("select asident, aentry from asidentity asident");
if(params.isFailed() || params.isPassed() || (params.getAssessmentStatus() != null && params.getAssessmentStatus().size() > 0)) {
sb.append(" inner join asident.assessmentEntries as aentry ");
} else {
sb.append(" left join asident.assessmentEntries as aentry ");
}
sb.append(" on ( aentry.repositoryEntry.key=:repoEntryKey");
if(params.getReferenceEntry() != null) {
sb.append(" and aentry.referenceEntry.key=:referenceKey");
}
if(params.getSubIdent() != null) {
sb.append(" and aentry.subIdent=:subIdent");
}
sb.append(")");
sb.append(" where (asident.key in");
if(params.isAdmin()) {
sb.append(" (select participant.identity.key from repoentrytogroup as rel, bgroupmember as participant")
.append(" where rel.entry.key=:repoEntryKey and rel.group=participant.group")
.append(" and participant.role='").append(GroupRoles.participant.name()).append("'")
.append(" )");
if(params.isNonMembers()) {
sb.append(" or asident.key in (select aentry.identity.key from assessmententry aentryInvitee")
.append(" where aentryInvitee.repositoryEntry.key=:repoEntryKey")
.append(" and not exists (select membership.identity from repoentrytogroup as rel, bgroupmember as membership")
.append(" where rel.entry.key=:repoEntryKey and rel.group.key=membership.group.key and membership.identity.key=asident.key)")
.append(" )");
}
} else if(params.isBusinessGroupCoach() || params.isRepositoryEntryCoach()) {
sb.append(" (select participant.identity.key from repoentrytogroup as rel, bgroupmember as participant, bgroupmember as coach")
.append(" where rel.entry.key=:repoEntryKey")
.append(" and rel.group=coach.group and coach.role='").append(GroupRoles.coach.name()).append("' and coach.identity.key=:identityKey")
.append(" and rel.group=participant.group and participant.role='").append(GroupRoles.participant.name()).append("'")
.append(" )");
}
sb.append(" )");
if(params.isFailed()) {
sb.append(" aentry.passed=false");
}
if(params.isPassed()) {
sb.append(" aentry.passed=true");
}
if(params.getAssessmentStatus() != null && params.getAssessmentStatus().size() > 0) {
sb.append(" aentry.status in (:status)");
}
sb.append(" order by asident.name");
TypedQuery<Object[]> list = dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), Object[].class)
.setParameter("repoEntryKey", params.getEntry().getKey());
if(params.getReferenceEntry() != null) {
list.setParameter("referenceKey", params.getReferenceEntry().getKey());
}
if(params.getSubIdent() != null) {
list.setParameter("subIdent", params.getSubIdent());
}
if(!params.isAdmin()) {
list.setParameter("identityKey", coach.getKey());
}
if(params.getAssessmentStatus() != null && params.getAssessmentStatus().size() > 0) {
List<String> statusList = new ArrayList<>();
for(AssessmentEntryStatus assessmentStatus:params.getAssessmentStatus()) {
statusList.add(assessmentStatus.name());
}
list.setParameter("status", statusList);
}
List<Object[]> objects = list.getResultList();
List<AssessmentEntryRow> rows = new ArrayList<>();
for(Object[] object:objects) {
Identity identity = (Identity)object[0];
AssessmentEntry entry = (AssessmentEntry)object[1];
rows.add(new AssessmentEntryRow(identity, entry));
}
return rows;
}
@Override @Override
public List<AssessmentEntry> getAssessmentEntries(Identity coach, SearchAssessedIdentityParams params, AssessmentEntryStatus status) { public List<AssessmentEntry> getAssessmentEntries(Identity coach, SearchAssessedIdentityParams params, AssessmentEntryStatus status) {
......
/**
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at the
* <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Initial code contributed and copyrighted by<br>
* frentix GmbH, http://www.frentix.com
* <p>
*/
package org.olat.course.assessment.model;
import java.util.Date;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.annotations.GenericGenerator;
import org.olat.core.id.Identity;
import org.olat.core.id.Persistable;
import org.olat.core.id.User;
import org.olat.modules.assessment.AssessmentEntry;
import org.olat.modules.assessment.model.AssessmentEntryImpl;
import org.olat.user.UserImpl;
/**
* The instance is immutable
*
* Initial date: 01.12.2015<br>
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
*
*/
@Entity(name="asidentity")
@Table(name="o_bs_identity")
public class AssessedIdentity implements Persistable, Identity {
private static final long serialVersionUID = 5437094042277941568L;
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "hilo")
@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
private Long key;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="creationdate", nullable=false, insertable=false, updatable=false)
protected Date creationDate;
@Column(name="name", nullable=false, unique=false, insertable=false, updatable=false)
private String name;
@Column(name="lastlogin", nullable=false, unique=false, insertable=false, updatable=false)
private Date lastLogin;
@Column(name="external_id", nullable=false, unique=false, insertable=false, updatable=false)
private String externalId;
@Column(name="status", nullable=false, unique=false, insertable=false, updatable=false)
private Integer status;
@ManyToOne(targetEntity=UserImpl.class,fetch=FetchType.LAZY, optional=false)
@JoinColumn(name="fk_user_id", nullable=false, insertable=false, updatable=false)
private User user;
@OneToMany(targetEntity=AssessmentEntryImpl.class, mappedBy="identity")
private Set<AssessmentEntry> assessmentEntries;
@Override
public Long getKey() {
return key;
}
@Override
public Date getCreationDate() {
return creationDate;
}
@Override
public String getName() {
return name;
}
@Override
public Date getLastLogin() {
return lastLogin;
}
@Override
public Integer getStatus() {
return status;
}
@Override
public String getExternalId() {
return externalId;
}
@Override
public User getUser() {
return user;
}
public Set<AssessmentEntry> getAssessmentEntries() {
return assessmentEntries;
}
@Override
public int hashCode() {
return getKey() == null ? 34801 : getKey().hashCode();
}
@Override
public boolean equals(Object obj) {
if(this == obj) {
return true;
}
if(obj instanceof AssessedIdentity) {
AssessedIdentity id = (AssessedIdentity)obj;
return getKey() != null && getKey().equals(id.getKey());
}
return false;
}
@Override
public boolean equalsByPersistableKey(Persistable persistable) {
return equals(persistable);
}
}
/**
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at the
* <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Initial code contributed and copyrighted by<br>
* frentix GmbH, http://www.frentix.com
* <p>
*/
package org.olat.course.assessment.model;
import org.olat.core.id.Identity;
import org.olat.modules.assessment.AssessmentEntry;
/**
*
* Initial date: 01.12.2015<br>
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
*
*/
public class AssessmentEntryRow {
private final Identity identity;
private final AssessmentEntry entry;
public AssessmentEntryRow(Identity identity, AssessmentEntry entry) {
this.identity = identity;
this.entry = entry;
}
public Identity getIdentity() {
return identity;
}
public AssessmentEntry getEntry() {
return entry;
}
}
...@@ -20,7 +20,9 @@ ...@@ -20,7 +20,9 @@
package org.olat.course.assessment.ui.tool; package org.olat.course.assessment.ui.tool;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import org.olat.basesecurity.BaseSecurity; import org.olat.basesecurity.BaseSecurity;
import org.olat.basesecurity.BaseSecurityModule; import org.olat.basesecurity.BaseSecurityModule;
...@@ -55,7 +57,6 @@ import org.olat.course.ICourse; ...@@ -55,7 +57,6 @@ import org.olat.course.ICourse;
import org.olat.course.assessment.AssessmentMainController; import org.olat.course.assessment.AssessmentMainController;
import org.olat.course.assessment.AssessmentToolManager; import org.olat.course.assessment.AssessmentToolManager;
import org.olat.course.assessment.bulk.PassedCellRenderer; import org.olat.course.assessment.bulk.PassedCellRenderer;
import org.olat.course.assessment.model.AssessmentEntryRow;
import org.olat.course.assessment.model.SearchAssessedIdentityParams; import org.olat.course.assessment.model.SearchAssessedIdentityParams;
import org.olat.course.assessment.ui.tool.AssessmentIdentitiesCourseNodeTableModel.IdentityCourseElementCols; import org.olat.course.assessment.ui.tool.AssessmentIdentitiesCourseNodeTableModel.IdentityCourseElementCols;
import org.olat.course.nodes.AssessableCourseNode; import org.olat.course.nodes.AssessableCourseNode;
...@@ -235,16 +236,19 @@ public class AssessmentIdentitiesCourseNodeController extends FormBasicControlle ...@@ -235,16 +236,19 @@ public class AssessmentIdentitiesCourseNodeController extends FormBasicControlle
} }
params.setBusinessGroupKeys(businessGroupKeys); params.setBusinessGroupKeys(businessGroupKeys);
params.setSearchString(searchString); params.setSearchString(searchString);
List<Identity> assessedIdentities = assessmentToolManager.getAssessedIdentities(getIdentity(), params);
List<AssessmentEntry> assessmentEntries = assessmentToolManager.getAssessmentEntries(getIdentity(), params, null);
Map<Long,AssessmentEntry> entryMap = new HashMap<>();
assessmentEntries.forEach((entry) -> entryMap.put(entry.getIdentity().getKey(), entry));
List<AssessmentEntryRow> quickRows = assessmentToolManager.getAssessmentEntryRows(getIdentity(), params, null); List<AssessedIdentityCourseElementRow> rows = new ArrayList<>(assessedIdentities.size());
for(Identity assessedIdentity:assessedIdentities) {
List<Identity> assessedIdentities = new ArrayList<>(quickRows.size()); AssessmentEntry entry = entryMap.get(assessedIdentity.getKey());
List<AssessedIdentityCourseElementRow> rows = new ArrayList<>(quickRows.size()); if(accept(entry, params)) {
for(AssessmentEntryRow quickRow:quickRows) { rows.add(new AssessedIdentityCourseElementRow(assessedIdentity, entry, userPropertyHandlers, getLocale()));
assessedIdentities.add(quickRow.getIdentity()); }
rows.add(new AssessedIdentityCourseElementRow(quickRow.getIdentity(), quickRow.getEntry(), userPropertyHandlers, getLocale()));
} }
usersTableModel.setObjects(rows); usersTableModel.setObjects(rows);
tableEl.reloadData(); tableEl.reloadData();
......
...@@ -600,7 +600,7 @@ public class UserWebService { ...@@ -600,7 +600,7 @@ public class UserWebService {
} }
Identity authIdentity = getUserRequest(request).getIdentity(); Identity authIdentity = getUserRequest(request).getIdentity();
if(!isUserManager(request) && !identity.equalsByPersistableKey(authIdentity)) { if(!isUserManager(request) && !identity.getKey().equals(authIdentity.getKey())) {
return Response.serverError().status(Status.UNAUTHORIZED).build(); return Response.serverError().status(Status.UNAUTHORIZED).build();
} }
partsReader = new MultipartReader(request); partsReader = new MultipartReader(request);
......
...@@ -98,7 +98,6 @@ ...@@ -98,7 +98,6 @@
<class>org.olat.core.commons.services.taskexecutor.model.PersistentTaskModifier</class> <class>org.olat.core.commons.services.taskexecutor.model.PersistentTaskModifier</class>
<class>org.olat.core.commons.services.commentAndRating.model.UserRatingImpl</class> <class>org.olat.core.commons.services.commentAndRating.model.UserRatingImpl</class>
<class>org.olat.core.commons.services.commentAndRating.model.UserCommentImpl</class> <class>org.olat.core.commons.services.commentAndRating.model.UserCommentImpl</class>
<class>org.olat.course.assessment.model.AssessedIdentity</class>
<class>org.olat.course.assessment.model.AssessmentModeImpl</class> <class>org.olat.course.assessment.model.AssessmentModeImpl</class>
<class>org.olat.course.assessment.model.AssessmentModeToAreaImpl</class> <class>org.olat.course.assessment.model.AssessmentModeToAreaImpl</class>
<class>org.olat.course.assessment.model.AssessmentModeToGroupImpl</class> <class>org.olat.course.assessment.model.AssessmentModeToGroupImpl</class>
......
...@@ -19,15 +19,11 @@ ...@@ -19,15 +19,11 @@
*/ */
package org.olat.course.assessment.manager; package org.olat.course.assessment.manager;
import java.util.List;
import java.util.Set;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.olat.core.commons.persistence.DB; import org.olat.core.commons.persistence.DB;
import org.olat.core.id.Identity; import org.olat.core.id.Identity;
import org.olat.course.assessment.AssessmentToolManager; import org.olat.course.assessment.AssessmentToolManager;
import org.olat.course.assessment.model.AssessedIdentity;
import org.olat.modules.assessment.AssessmentEntry; import org.olat.modules.assessment.AssessmentEntry;
import org.olat.modules.assessment.manager.AssessmentEntryDAO; import org.olat.modules.assessment.manager.AssessmentEntryDAO;
import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntry;
...@@ -62,15 +58,7 @@ public class AssessmentToolManagerTest extends OlatTestCase { ...@@ -62,15 +58,7 @@ public class AssessmentToolManagerTest extends OlatTestCase {
Assert.assertNotNull(nodeAssessment); Assert.assertNotNull(nodeAssessment);
dbInstance.commitAndCloseSession(); dbInstance.commitAndCloseSession();
List<AssessedIdentity> ids = ((AssessmentToolManagerImpl)assessmentToolManager).getIdentities();
Assert.assertNotNull(ids);
for(AssessedIdentity id:ids) {
if(id.getKey().equals(assessedIdentity.getKey())) {
Set<AssessmentEntry> entries = id.getAssessmentEntries();
System.out.println(entries);
}
}
} }
} }
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