Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug/cite 221 #276

Open
wants to merge 21 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
1ae05d4
[CITE-221] Added config for creating mongo DB index
PradnyaC11 Jul 3, 2024
4b4e181
[CITE-221] Added config to create mongo index
PradnyaC11 Jul 5, 2024
a8fbf93
[CITE-221] Added index config for key and groupId for citation, colle…
PradnyaC11 Jul 8, 2024
c7a356b
[CITE-221] Added duplicate key exception to methods
PradnyaC11 Jul 9, 2024
7121561
[CITE-221] Added duplicate key exception for group
PradnyaC11 Jul 12, 2024
fec500a
[CITE-221] Added duplicate key exception for group
PradnyaC11 Jul 15, 2024
2ac9b55
[CITE-221] Added few for Duplicate key exceptions and updated logic
PradnyaC11 Jul 16, 2024
73c3aaf
[CITE-221] Reverted duplicate key exceptions changes
PradnyaC11 Jul 17, 2024
0b2624a
[CITE-221] Updated logic so as to not throw duplicate key exception
PradnyaC11 Jul 18, 2024
a87f135
[CITE-221] Updated logic to avoid getting duplicate key exception
PradnyaC11 Jul 19, 2024
12f6aa3
[CITE-221] Addressing PR comment
PradnyaC11 Jul 19, 2024
42d1c8e
[CITE-221] Updated citesphere model version in pom.xml
PradnyaC11 Sep 24, 2024
d7a4219
Merge branch 'develop' into bug/CITE-221
PradnyaC11 Oct 28, 2024
a8a977c
[CITE-221] Addressed PR comments
PradnyaC11 Oct 29, 2024
b039e95
[CITE-221] Addressed PR comments
PradnyaC11 Oct 31, 2024
928ea95
[CITE-221] Resolved code factor dependency issue
PradnyaC11 Oct 31, 2024
1bea700
[CITE-221] Fixed test cases
PradnyaC11 Dec 3, 2024
87abbe4
Merge branch 'develop' into bug/CITE-221
PradnyaC11 Dec 3, 2024
ac2599b
[CITE-221] Fixed code factor issues
PradnyaC11 Dec 3, 2024
426cfbc
Merge branch 'bug/CITE-221' of https://github.com/diging/citesphere i…
PradnyaC11 Dec 5, 2024
d707d59
[CITE-221] Changed java version back to 1.8 because of error in test
PradnyaC11 Feb 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions citesphere/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -410,27 +410,27 @@
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-template</artifactId>
<version>3.0.1</version>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-core</artifactId>
<version>3.0.1</version>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-api</artifactId>
<version>3.0.1</version>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-servlet</artifactId>
<version>3.0.1</version>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>3.0.1</version>
<version>3.0.8</version>
</dependency>

<dependency>
Expand Down Expand Up @@ -563,7 +563,7 @@
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.7</version>
<version>2.14.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt -->
Expand Down Expand Up @@ -651,8 +651,8 @@
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,11 @@
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import edu.asu.diging.citesphere.api.v1.V1Controller;
import edu.asu.diging.citesphere.api.v1.model.impl.Collections;
import edu.asu.diging.citesphere.api.v1.model.impl.Group;
import edu.asu.diging.citesphere.core.exceptions.GroupDoesNotExistException;
import edu.asu.diging.citesphere.core.service.IGroupManager;
import edu.asu.diging.citesphere.core.service.jobs.ISyncJobManager;
import edu.asu.diging.citesphere.core.user.IUserManager;
import edu.asu.diging.citesphere.model.bib.ICitationGroup;
import edu.asu.diging.citesphere.user.IUser;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import java.io.IOException;
import java.security.Principal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,23 @@
import java.time.ZoneOffset;
import java.util.Arrays;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.ReadingConverter;
import org.springframework.data.convert.WritingConverter;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.index.Index;
import org.springframework.data.mongodb.core.index.IndexOperations;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import org.springframework.stereotype.Component;
Expand All @@ -28,6 +33,10 @@
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;

import edu.asu.diging.citesphere.model.bib.impl.Citation;
import edu.asu.diging.citesphere.model.bib.impl.CitationCollection;
import edu.asu.diging.citesphere.model.bib.impl.CitationGroup;

@Configuration
@PropertySource({ "classpath:config.properties", "${appConfigFile:classpath:}/app.properties" })
@EnableMongoRepositories({ "edu.asu.diging.citesphere.core.mongo", "edu.asu.diging.citesphere.data.bib" })
Expand Down Expand Up @@ -98,4 +107,21 @@ public OffsetDateTime convert(String source) {
return OffsetDateTime.parse(source);
}
}

@Configuration
public static class MongoIndex implements InitializingBean {

@Autowired
private MongoTemplate mongoTemplate;

@Override
public void afterPropertiesSet() throws Exception {
IndexOperations citationIndexOps = mongoTemplate.indexOps(Citation.class);
citationIndexOps.ensureIndex(new Index().on("key", Sort.Direction.ASC).unique());
IndexOperations citationCollectionIndexOps = mongoTemplate.indexOps(CitationCollection.class);
citationCollectionIndexOps.ensureIndex(new Index().on("key", Sort.Direction.ASC).unique());
IndexOperations citationGorupIndexOps = mongoTemplate.indexOps(CitationGroup.class);
citationGorupIndexOps.ensureIndex(new Index().on("groupId", Sort.Direction.ASC).unique());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
import javax.annotation.PostConstruct;
import javax.transaction.Transactional;

import org.bson.types.ObjectId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
Expand Down Expand Up @@ -181,15 +184,15 @@ public void updateCitation(IUser user, String groupId, ICitation citation)
throws ZoteroConnectionException, CitationIsOutdatedException, ZoteroHttpStatusException, ZoteroItemCreationFailedException {
long citationVersion = zoteroManager.getGroupItemVersion(user, groupId, citation.getKey());
Optional<ICitation> storedCitationOptional = citationStore.findById(citation.getKey());
ICitation updatedCitation = zoteroManager.updateCitation(user, groupId, citation);
if (storedCitationOptional.isPresent()) {
ICitation storedCitation = storedCitationOptional.get();
if (storedCitation.getVersion() != citationVersion) {
throw new CitationIsOutdatedException();
}
citationStore.delete(storedCitation);
updatedCitation.setId(storedCitation.getId());
}

ICitation updatedCitation = zoteroManager.updateCitation(user, groupId, citation);
citationStore.save(updatedCitation);
}

Expand Down Expand Up @@ -251,7 +254,7 @@ public ICitation updateCitationFromZotero(IUser user, String groupId, String ite

Optional<ICitation> oldCitation = citationStore.findById(itemKey);
if (oldCitation.isPresent()) {
citationStore.delete(oldCitation.get());
citation.setId(oldCitation.get().getId());
}
citationStore.save(citation);
return citation;
Expand Down Expand Up @@ -326,8 +329,9 @@ public List<ICitationGroup> getGroups(IUser user) {
if (groupOptional.isPresent()) {
ICitationGroup group = groupOptional.get();
if (group.getMetadataVersion() != groupVersions.get(id)) {
groupRepository.delete((CitationGroup) group);
ObjectId groupID = group.getId();
group = zoteroManager.getGroup(user, id + "", true);
group.setId(groupID);
group.setUpdatedOn(OffsetDateTime.now().toString());
}
addUserToGroup(group, user);
Expand Down Expand Up @@ -382,6 +386,9 @@ public CitationResults getGroupItems(IUser user, String groupId, String collecti
if (!groupOptional.isPresent() || !groupOptional.get().getUsers().contains(user.getUsername())) {
group = zoteroManager.getGroup(user, groupId, false);
if (group != null) {
if (groupOptional.isPresent()){
group.setId(groupOptional.get().getId());
}
group.getUsers().add(user.getUsername());
groupRepository.save((CitationGroup) group);
}
Expand All @@ -399,13 +406,14 @@ public CitationResults getGroupItems(IUser user, String groupId, String collecti
long previousVersion = group.getContentVersion();
// first update the group info
// if we are using a previously stored group, delete it
ICitationGroup zoteroGroup = null;
if (group.getId() != null) {
groupRepository.delete((CitationGroup) group);
group = zoteroManager.getGroup(user, groupId + "", true);
zoteroGroup = zoteroManager.getGroup(user, groupId + "", true);
zoteroGroup.setId(group.getId());
}
group.setUpdatedOn(OffsetDateTime.now().toString());
addUserToGroup(group, user);
group = groupRepository.save((CitationGroup) group);
zoteroGroup.setUpdatedOn(OffsetDateTime.now().toString());
addUserToGroup(zoteroGroup, user);
group = groupRepository.save((CitationGroup) zoteroGroup);

// then update content
results.setNotModified(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import edu.asu.diging.citesphere.core.exceptions.GroupDoesNotExistException;
import edu.asu.diging.citesphere.core.service.ICitationCollectionManager;
import edu.asu.diging.citesphere.core.service.ICitationManager;
import edu.asu.diging.citesphere.core.service.IGroupManager;
Expand Down Expand Up @@ -44,9 +43,11 @@ public ICitationGroup getGroup(IUser user, String groupId) {
if (groupOptional.isPresent() && groupOptional.get().getUsers().contains(user.getUsername())) {
return (ICitationGroup) groupOptional.get();
}

ICitationGroup group = zoteroManager.getGroup(user, groupId, false);
if (group != null) {
if (groupOptional.isPresent()) {
group.setId(groupOptional.get().getId());
}
group.getUsers().add(user.getUsername());
groupRepository.save((CitationGroup) group);
return group;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,11 @@
import edu.asu.diging.citesphere.core.exceptions.GroupDoesNotExistException;
import edu.asu.diging.citesphere.core.exceptions.ZoteroHttpStatusException;
import edu.asu.diging.citesphere.core.exceptions.ZoteroItemCreationFailedException;
import edu.asu.diging.citesphere.core.kafka.IKafkaRequestProducer;
import edu.asu.diging.citesphere.core.repository.jobs.UploadFileJobRepository;
import edu.asu.diging.citesphere.core.service.ICitationManager;
import edu.asu.diging.citesphere.core.service.IGroupManager;
import edu.asu.diging.citesphere.core.service.giles.GilesUploadChecker;
import edu.asu.diging.citesphere.core.service.giles.GilesUploadService;
import edu.asu.diging.citesphere.core.service.jobs.IUploadFileJobManager;
import edu.asu.diging.citesphere.core.service.jwt.IJwtTokenService;
import edu.asu.diging.citesphere.core.service.upload.IFileStorageManager;
import edu.asu.diging.citesphere.model.bib.ICitation;
import edu.asu.diging.citesphere.model.bib.ICitationGroup;
import edu.asu.diging.citesphere.model.bib.IGilesUpload;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,13 @@
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import edu.asu.diging.citesphere.core.exceptions.CannotFindCitationException;
import edu.asu.diging.citesphere.core.exceptions.GroupDoesNotExistException;
import edu.asu.diging.citesphere.core.exceptions.ZoteroHttpStatusException;
import edu.asu.diging.citesphere.core.service.ICitationManager;
import edu.asu.diging.citesphere.model.bib.ICitation;
import edu.asu.diging.citesphere.model.bib.IGilesUpload;
import edu.asu.diging.citesphere.model.bib.impl.IGilesFile;
import edu.asu.diging.citesphere.user.IUser;

@Controller
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import edu.asu.diging.citesphere.core.exceptions.CannotFindCitationException;
import edu.asu.diging.citesphere.core.exceptions.GroupDoesNotExistException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -481,12 +481,15 @@ public void test_addCitationToReferences_citationFound() throws SelfCitationExce
String referenceCitationKey = "referenceCitationKey";
citation.getReferences().add(reference);
citation.setVersion(1L);
citation.setId(new ObjectId("507f1f77bcf86cd799439011"));

Mockito.when(zoteroManager.getGroupItemVersion(user, GROUP_ID, CITATION_KEY)).thenReturn(currentVersion);
when(zoteroManager.getGroupItemVersion(user, GROUP_ID, CITATION_KEY)).thenReturn(currentVersion);
ICitation updatedCitation = new Citation();
updatedCitation.setKey(CITATION_KEY);
updatedCitation.setVersion(new Long(2));
Mockito.when(zoteroManager.updateCitation(user, GROUP_ID, citation)).thenReturn(updatedCitation);

when(zoteroManager.updateCitation(Mockito.eq(user), Mockito.eq(GROUP_ID), Mockito.any(ICitation.class)))
.thenReturn(updatedCitation);

when(citationStore.save(citation)).thenReturn(updatedCitation);
when(citationStore.findById(citation.getKey())).thenReturn(Optional.of(citation));
Expand All @@ -502,13 +505,16 @@ public void test_addCitationToReferences_nullReferences() throws SelfCitationExc
String referenceCitationKey = "referenceCitationKey";
citation.setReferences(null);
citation.setVersion(1L);
citation.setId(new ObjectId("507f1f77bcf86cd799439011"));

Mockito.when(zoteroManager.getGroupItemVersion(user, GROUP_ID, CITATION_KEY)).thenReturn(currentVersion);
when(zoteroManager.getGroupItemVersion(user, GROUP_ID, CITATION_KEY)).thenReturn(1L);
ICitation updatedCitation = new Citation();
updatedCitation.setKey(CITATION_KEY);
updatedCitation.setVersion(new Long(2));
Mockito.when(zoteroManager.updateCitation(user, GROUP_ID, citation)).thenReturn(updatedCitation);

updatedCitation.setVersion(2L);

when(zoteroManager.updateCitation(Mockito.eq(user), Mockito.eq(GROUP_ID), Mockito.any(ICitation.class)))
.thenReturn(updatedCitation);

when(citationStore.save(citation)).thenReturn(updatedCitation);
when(citationStore.findById(citation.getKey())).thenReturn(Optional.of(citation));
doNothing().when(citationStore).delete(any(ICitation.class));
Expand Down