Project

General

Profile

« Previous | Next » 

Revision 57754

bug fix

View differences:

modules/dnet-orgs-database-application/trunk/src/main/java/eu/dnetlib/organizations/model/view/OrganizationSimpleView.java
19 19
@TypeDefs({
20 20
		@TypeDef(name = "string-array", typeClass = StringArrayType.class)
21 21
})
22
public class OrganizationSimpleView implements Serializable {
22
public class OrganizationSimpleView implements Serializable, Comparable<OrganizationSimpleView> {
23 23

  
24 24
	/**
25 25
	 *
......
119 119
		return Objects.equals(id, other.id);
120 120
	}
121 121

  
122
	@Override
123
	public int compareTo(final OrganizationSimpleView o) {
124
		return id.compareTo(o.getId());
125
	}
126

  
122 127
}
modules/dnet-orgs-database-application/trunk/src/main/java/eu/dnetlib/organizations/controller/OrganizationController.java
3 3
import java.util.Arrays;
4 4
import java.util.Collection;
5 5
import java.util.HashMap;
6
import java.util.LinkedHashSet;
7 6
import java.util.List;
8 7
import java.util.Map;
9 8
import java.util.Set;
10
import java.util.TreeMap;
9
import java.util.TreeSet;
11 10
import java.util.stream.Collectors;
12 11

  
13 12
import org.apache.commons.lang3.StringUtils;
......
166 165
	@RequestMapping(value = "/conflicts/all", method = RequestMethod.GET)
167 166
	public Collection<Set<OrganizationSimpleView>> findWarningsById(final Authentication authentication) {
168 167

  
169
		final Map<String, Set<OrganizationSimpleView>> res = new TreeMap<>();
168
		int count = 0;
169
		final Map<Integer, Set<OrganizationSimpleView>> groups = new HashMap<>();
170 170

  
171
		final Map<String, String> roots = new HashMap<>();
172

  
173 171
		if (UserInfo.isSuperAdmin(authentication)) {
174 172
			for (final ConflictView w : conflictViewRepository.findAll()) {
175
				final String root = findWarningRoot(w, roots);
176
				if (!res.containsKey(root)) {
177
					res.put(root, new LinkedHashSet<OrganizationSimpleView>());
178
					res.get(root).add(new OrganizationSimpleView(w.getId1(), w.getName1(), w.getType1(), w.getCity1(), w.getCountry1(), new String[] {}));
173
				final List<Integer> list = findExistingGroupsForRel(w, groups);
174
				if (list.size() == 0) {
175
					groups.put(count, new TreeSet<>());
176
					addToGroup(groups, count, w);
177
					count++;
178
				} else if (list.size() == 1) {
179
					addToGroup(groups, list.get(0), w);
180
				} else {
181
					final int newPos = count;
182
					groups.put(count, new TreeSet<>());
183
					list.forEach(i -> groups.get(newPos).addAll(groups.get(i)));
184
					list.forEach(i -> groups.remove(i));
185
					addToGroup(groups, newPos, w);
186
					count++;
179 187
				}
180
				res.get(root).add(new OrganizationSimpleView(w.getId2(), w.getName2(), w.getType2(), w.getCity2(), w.getCountry2(), new String[] {}));
181 188
			}
182
			return res.values();
189

  
190
			return groups.values();
183 191
		} else {
184 192
			throw new RuntimeException("User not authorized");
185 193
		}
186 194
	}
187 195

  
188
	private String findWarningRoot(final ConflictView w, final Map<String, String> roots) {
189
		if (roots.containsKey(w.getId1())) {
190
			return roots.get(w.getId1());
191
		} else if (roots.containsKey(w.getId2())) {
192
			return roots.get(w.getId2());
193
		} else {
194
			// id1 is the new root
195
			roots.put(w.getId1(), w.getId1());
196
			roots.put(w.getId2(), w.getId1());
197
			return w.getId1();
198
		}
196
	private List<Integer> findExistingGroupsForRel(final ConflictView w, final Map<Integer, Set<OrganizationSimpleView>> groups) {
197
		return groups.entrySet()
198
				.stream()
199
				.filter(e -> {
200
					return e.getValue().stream().filter(o -> o.getId().equals(w.getId1()) || o.getId().equals(w.getId2())).findFirst().isPresent();
201
				})
202
				.map(e -> e.getKey())
203
				.distinct()
204
				.collect(Collectors.toList());
205
	}
199 206

  
207
	private void addToGroup(final Map<Integer, Set<OrganizationSimpleView>> groups, final int count, final ConflictView w) {
208
		groups.get(count).add(new OrganizationSimpleView(w.getId1(), w.getName1(), w.getType1(), w.getCity1(), w.getCountry1(), new String[] {}));
209
		groups.get(count).add(new OrganizationSimpleView(w.getId2(), w.getName2(), w.getType2(), w.getCity2(), w.getCountry2(), new String[] {}));
200 210
	}
201 211

  
202 212
	@RequestMapping(value = "/enrichments", method = RequestMethod.POST)
modules/dnet-orgs-database-application/trunk/src/main/resources/static/resources/js/organizations.js
403 403
	
404 404
	$scope.setCurrentUser = function(user) {
405 405
		angular.copy(user, $scope.currentUser);
406
		$scope.currentUser.role = 'USER';
406
		if (!$scope.currentUser.role || $scope.currentUser.role == 'PENDING') {		
407
			$scope.currentUser.role = 'USER';
408
		}
407 409
	}
408 410
	
409 411
	$scope.saveUser = function(user) {

Also available in: Unified diff