# HG changeset patch # User Raimund Renkert # Date 1387278644 -3600 # Node ID 414534a2c23d8a8ad67b200e6763a25a5575c503 # Parent 6ba7630c7e52a59dbad3afe023086cbe3089e02e Set readonly flag for proben using the mstId as criteria. diff -r 6ba7630c7e52 -r 414534a2c23d src/main/java/de/intevation/lada/data/LProbeRepository.java --- a/src/main/java/de/intevation/lada/data/LProbeRepository.java Mon Dec 16 11:23:40 2013 +0100 +++ b/src/main/java/de/intevation/lada/data/LProbeRepository.java Tue Dec 17 12:10:44 2013 +0100 @@ -75,7 +75,8 @@ String sql, List filters, List results, - MultivaluedMap params) { + MultivaluedMap params, + List msts) { Query query = em.createNativeQuery(sql); for (String filter: filters) { List param = params.get(filter); @@ -89,17 +90,20 @@ List> res = new ArrayList>(); for (Object[] row: result) { Map set = new HashMap(); + boolean ro = false; for (int i = 0; i < row.length; i++) { set.put(results.get(i), row[i]); if (results.get(i).equals("probeId")) { if (authorization.isReadOnly((String)row[i])) { - set.put("readonly", Boolean.TRUE); - } - else { - set.put("readonly", Boolean.FALSE); + ro = true; } } + if (results.get(i).equals("mstId") && + !msts.contains((String)row[i])) { + ro = true; + } } + set.put("readonly", ro); res.add(set); } return new Response(true, 200, res); diff -r 6ba7630c7e52 -r 414534a2c23d src/main/java/de/intevation/lada/rest/LProbeService.java --- a/src/main/java/de/intevation/lada/rest/LProbeService.java Mon Dec 16 11:23:40 2013 +0100 +++ b/src/main/java/de/intevation/lada/rest/LProbeService.java Tue Dec 17 12:10:44 2013 +0100 @@ -121,6 +121,7 @@ if (auth.getMst().contains(mstId)) { return response; } + p.setReadonly(true); return response; } return new Response(false, 698, new ArrayList()); @@ -205,7 +206,8 @@ } subselect += "or readonly = true) as lp"; sql = sql.replace("l_probe", subselect); - return lpr.filterFree(sql, filters, results, params); + List msts = auth.getMst(); + return lpr.filterFree(sql, filters, results, params, msts); } catch(AuthenticationException ae) { return new Response(false, 699, new ArrayList());