
edu.internet2.middleware.grouperClient.jdbc.tableSync.GcGrouperSyncMemberDao Maven / Gradle / Ivy
package edu.internet2.middleware.grouperClient.jdbc.tableSync;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import edu.internet2.middleware.grouperClient.jdbc.GcDbAccess;
import edu.internet2.middleware.grouperClient.jdbc.GcPersist;
import edu.internet2.middleware.grouperClient.jdbc.GcPersistableField;
import edu.internet2.middleware.grouperClient.util.GrouperClientUtils;
public class GcGrouperSyncMemberDao {
/**
*
* @param gcGrouperSyncMemberId
* @return
*/
public GcGrouperSyncMember memberRetrieveByIdFromCache(String gcGrouperSyncMemberId) {
return this.internalCacheSyncMembersById.get(gcGrouperSyncMemberId);
}
/**
* keep an internal cache of members by member id
*/
@GcPersistableField(persist = GcPersist.dontPersist)
private Map internalCacheSyncMembers = new HashMap();
/**
* keep an internal cache of members by uuid
*/
@GcPersistableField(persist = GcPersist.dontPersist)
private Map internalCacheSyncMembersById = new HashMap();
public GcGrouperSyncMemberDao() {
}
/**
* select grouper sync member by member id. Note: this doesnt store to db yet, you do that at the end
* @param connectionName
* @param memberId
* @return the member
*/
public GcGrouperSyncMember memberCreateByMemberId(String memberId) {
GcGrouperSyncMember gcGrouperSyncMember = this.internal_memberCreateByMemberIdHelper(memberId);
this.internal_memberStore(gcGrouperSyncMember);
this.gcGrouperSync.addObjectCreatedCount(1);
this.internal_memberCacheAdd(gcGrouperSyncMember);
return gcGrouperSyncMember;
}
/**
* create grouper sync member by member id. Note: this doesnt store to db yet, you do that at the end
* @param connectionName
* @param memberId
* @return the member
*/
public GcGrouperSyncMember internal_memberCreateByMemberIdHelper(String memberId) {
GcGrouperSyncMember gcGrouperSyncMember = internal_memberRetrieveFromDbByMemberNameFromMemberId(memberId);
if (gcGrouperSyncMember != null) {
gcGrouperSyncMember.setMemberId(memberId);
return gcGrouperSyncMember;
}
gcGrouperSyncMember = new GcGrouperSyncMember();
gcGrouperSyncMember.setGrouperSync(this.getGcGrouperSync());
gcGrouperSyncMember.setMemberId(memberId);
return gcGrouperSyncMember;
}
/**
* select grouper sync member by member id
* @param connectionName
* @param memberId
* @return the group
*/
public GcGrouperSyncMember internal_memberRetrieveFromDbByMemberNameFromMemberId(String memberId) {
List gcGrouperSyncMembers = new GcDbAccess().connectionName(this.getGcGrouperSync().getConnectionName())
.sql("select gsm.* from grouper_sync_member gsm, grouper_members gm where gsm.grouper_sync_id = ? and gm.id = ? and gm.subject_id = gsm.subject_id and gsm.source_id = gm.subject_source")
.addBindVar(this.getGcGrouperSync().getId()).addBindVar(memberId).selectList(GcGrouperSyncMember.class);
if (GrouperClientUtils.length(gcGrouperSyncMembers) == 0) {
return null;
}
if (GrouperClientUtils.length(gcGrouperSyncMembers) == 1) {
return gcGrouperSyncMembers.iterator().next();
}
gcGrouperSyncMembers.sort(new Comparator() {
@Override
public int compare(GcGrouperSyncMember o1, GcGrouperSyncMember o2) {
return o2.getLastUpdated().compareTo(o1.getLastUpdated());
}
});
return gcGrouperSyncMembers.iterator().next();
}
/**
* delete batch
* @param gcGrouperSyncMembers
* @return rows deleted (members and logs)
*/
public int memberDelete(Collection gcGrouperSyncMembers, boolean deleteMemberships, boolean deleteLogs) {
int count = 0;
if (GrouperClientUtils.length(gcGrouperSyncMembers) == 0) {
return 0;
}
List> batchBindVars = new ArrayList>();
Set memberSyncIds = new HashSet();
for (GcGrouperSyncMember gcGrouperSyncMember : gcGrouperSyncMembers) {
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy