You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemds.apache.org by se...@apache.org on 2021/10/19 15:30:31 UTC
[systemds] branch master updated: [MINOR] Adjust Details in Privacy
Package
This is an automated email from the ASF dual-hosted git repository.
sebwrede pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/systemds.git
The following commit(s) were added to refs/heads/master by this push:
new 3e3c2d3 [MINOR] Adjust Details in Privacy Package
3e3c2d3 is described below
commit 3e3c2d38de83d5545f614800a8f25056fc3f3132
Author: sebwrede <sw...@know-center.at>
AuthorDate: Tue Oct 5 12:13:54 2021 +0200
[MINOR] Adjust Details in Privacy Package
Closes #1411.
---
.../runtime/privacy/CheckedConstraintsLog.java | 6 ++---
.../sysds/runtime/privacy/PrivacyConstraint.java | 20 ++++++++---------
.../sysds/runtime/privacy/PrivacyMonitor.java | 6 ++++-
.../runtime/privacy/finegrained/DataRange.java | 6 ++---
.../privacy/finegrained/FineGrainedPrivacy.java | 26 +++++++++++-----------
.../finegrained/FineGrainedPrivacyList.java | 9 ++++----
.../privacy/finegrained/FineGrainedPrivacyMap.java | 10 ++++-----
.../privacy/propagation/PrivacyPropagator.java | 2 +-
.../privacy/CheckedConstraintsLogTest.java | 8 +++----
9 files changed, 47 insertions(+), 46 deletions(-)
diff --git a/src/main/java/org/apache/sysds/runtime/privacy/CheckedConstraintsLog.java b/src/main/java/org/apache/sysds/runtime/privacy/CheckedConstraintsLog.java
index 3d0ec90..a5264cf 100644
--- a/src/main/java/org/apache/sysds/runtime/privacy/CheckedConstraintsLog.java
+++ b/src/main/java/org/apache/sysds/runtime/privacy/CheckedConstraintsLog.java
@@ -53,7 +53,7 @@ public class CheckedConstraintsLog {
}
/**
- * Add an occurence of the given privacy level to the loaded constraints log total.
+ * Add an occurrence of the given privacy level to the loaded constraints log total.
* @param level privacy level from loaded privacy constraint
*/
public static void addLoadedConstraint(PrivacyLevel level){
@@ -84,9 +84,9 @@ public class CheckedConstraintsLog {
public static String display(){
StringBuilder sb = new StringBuilder();
sb.append("Checked Privacy Constraints:\n");
- checkedConstraintsTotal.forEach((k,v)->sb.append("\t" + k + ": " + v + "\n"));
+ checkedConstraintsTotal.forEach((k,v)-> sb.append(String.format("\t%s: %s\n", k, v)));
sb.append("Loaded Privacy Constraints:\n");
- loadedConstraintsTotal.forEach((k,v)->sb.append("\t" + k + ": " + v + "\n"));
+ loadedConstraintsTotal.forEach((k,v)->sb.append(String.format("\t%s: %s\n", k, v)));
return sb.toString();
}
}
diff --git a/src/main/java/org/apache/sysds/runtime/privacy/PrivacyConstraint.java b/src/main/java/org/apache/sysds/runtime/privacy/PrivacyConstraint.java
index e950c22..8ea0618 100644
--- a/src/main/java/org/apache/sysds/runtime/privacy/PrivacyConstraint.java
+++ b/src/main/java/org/apache/sysds/runtime/privacy/PrivacyConstraint.java
@@ -143,10 +143,9 @@ public class PrivacyConstraint implements Externalizable
/**
* Get privacy constraints and put them into JSON object.
* @param json JSON object in which the privacy constraints are put
- * @return JSON object including the privacy constraints
- * @throws JSONException in case of errors in creating JSON object
+ * @throws JSONException in case of errors in putting into JSON object
*/
- public JSONObject toJson(JSONObject json) throws JSONException {
+ public void toJson(JSONObject json) throws JSONException {
if ( getPrivacyLevel() != null && getPrivacyLevel() != PrivacyLevel.None )
json.put(DataExpression.PRIVACY, getPrivacyLevel().name());
if ( hasFineGrainedConstraints() ) {
@@ -161,7 +160,6 @@ public class PrivacyConstraint implements Externalizable
rangesJson.put(PrivacyLevel.PrivateAggregation.name(), aggregateRangesJson);
json.put(DataExpression.FINE_GRAINED_PRIVACY, rangesJson);
}
- return json;
}
private static JSONArray getJsonArray(DataRange[] ranges) throws JSONException {
@@ -185,7 +183,7 @@ public class PrivacyConstraint implements Externalizable
int fineGrainedConstraintLength = is.readInt();
if ( fineGrainedConstraintLength > 0 ){
for (int i = 0; i < fineGrainedConstraintLength; i++){
- Integer levelIndex = (Integer) is.readInt();
+ int levelIndex = is.readInt();
PrivacyLevel rangePrivacy = PrivacyLevel.values()[levelIndex];
DataRange dataRange = readExternalDataRangeObject(is);
fineGrainedPrivacy.put(dataRange, rangePrivacy);
@@ -198,9 +196,9 @@ public class PrivacyConstraint implements Externalizable
objectOutput.writeInt(getPrivacyLevel().ordinal());
if (fineGrainedPrivacy != null && fineGrainedPrivacy.hasConstraints()){
- List<Entry<DataRange,PrivacyLevel>> finegrainedConstraints = fineGrainedPrivacy.getAllConstraintsList();
- objectOutput.writeInt(finegrainedConstraints.size());
- for ( Entry<DataRange,PrivacyLevel> constraint : finegrainedConstraints ) {
+ List<Entry<DataRange,PrivacyLevel>> fineGrainedConstraints = fineGrainedPrivacy.getAllConstraintsList();
+ objectOutput.writeInt(fineGrainedConstraints.size());
+ for ( Entry<DataRange,PrivacyLevel> constraint : fineGrainedConstraints ) {
objectOutput.writeInt(constraint.getValue().ordinal());
DataRange dataRange = constraint.getKey();
objectOutput.writeInt(dataRange.getBeginDims().length);
@@ -217,7 +215,7 @@ public class PrivacyConstraint implements Externalizable
* Reads a DataRange from ObjectInput.
* @param is ObjectInput from which the DataRange is read
* @return DataRange from ObjectInput
- * @throws IOException
+ * @throws IOException if an I/O error occurs during read
*/
private static DataRange readExternalDataRangeObject(ObjectInput is) throws IOException {
int dimLength = is.readInt();
@@ -231,7 +229,7 @@ public class PrivacyConstraint implements Externalizable
* @param is ObjectInput from which the long array is read
* @param dimLength length of input long array
* @return the input array as a long array
- * @throws IOException
+ * @throws IOException if an I/O error occurs during read
*/
private static long[] readExternalDataRangeDim(ObjectInput is, int dimLength) throws IOException {
long[] dims = new long[dimLength];
@@ -245,7 +243,7 @@ public class PrivacyConstraint implements Externalizable
* Write the long array to ObjectOutput.
* @param objectOutput ObjectOutput in which the long array is written.
* @param rangeDim long array to write in ObjectOutput.
- * @throws IOException
+ * @throws IOException if an I/O error occurs during write
*/
private static void writeExternalRangeDim(ObjectOutput objectOutput, long[] rangeDim) throws IOException {
for ( long beginIndex : rangeDim ){
diff --git a/src/main/java/org/apache/sysds/runtime/privacy/PrivacyMonitor.java b/src/main/java/org/apache/sysds/runtime/privacy/PrivacyMonitor.java
index 56445e4..af119c6 100644
--- a/src/main/java/org/apache/sysds/runtime/privacy/PrivacyMonitor.java
+++ b/src/main/java/org/apache/sysds/runtime/privacy/PrivacyMonitor.java
@@ -27,7 +27,7 @@ import org.apache.sysds.runtime.privacy.PrivacyConstraint.PrivacyLevel;
public class PrivacyMonitor
{
- private static EnumMap<PrivacyLevel,LongAdder> checkedConstraints;
+ private static final EnumMap<PrivacyLevel,LongAdder> checkedConstraints;
private static boolean checkPrivacy = false;
@@ -71,6 +71,10 @@ public class PrivacyMonitor
}
}
+ /**
+ * Clears all checked constraints.
+ * This is used to reset the counter of checked constraints for each PrivacyLevel.
+ */
public static void clearCheckedConstraints(){
checkedConstraints.replaceAll((k,v)->new LongAdder());
}
diff --git a/src/main/java/org/apache/sysds/runtime/privacy/finegrained/DataRange.java b/src/main/java/org/apache/sysds/runtime/privacy/finegrained/DataRange.java
index 6e77e34..ed93b19 100644
--- a/src/main/java/org/apache/sysds/runtime/privacy/finegrained/DataRange.java
+++ b/src/main/java/org/apache/sysds/runtime/privacy/finegrained/DataRange.java
@@ -22,7 +22,7 @@ package org.apache.sysds.runtime.privacy.finegrained;
import java.util.Arrays;
/**
- * A DataRange instance marks a part of a CachableData data object.
+ * A DataRange instance marks a part of a CacheableData data object.
* The beginDims marks the beginning for all dimensions and
* the endDims marks the end for all dimensions.
* DataRange is very similar to org.apache.sysds.runtime.util.IndexRange,
@@ -30,8 +30,8 @@ import java.util.Arrays;
*/
public class DataRange {
- private long[] _beginDims;
- private long[] _endDims;
+ private final long[] _beginDims;
+ private final long[] _endDims;
public DataRange(long[] beginDims, long[] endDims){
_beginDims = beginDims;
diff --git a/src/main/java/org/apache/sysds/runtime/privacy/finegrained/FineGrainedPrivacy.java b/src/main/java/org/apache/sysds/runtime/privacy/finegrained/FineGrainedPrivacy.java
index 2aa2f1d..57046ef 100644
--- a/src/main/java/org/apache/sysds/runtime/privacy/finegrained/FineGrainedPrivacy.java
+++ b/src/main/java/org/apache/sysds/runtime/privacy/finegrained/FineGrainedPrivacy.java
@@ -31,60 +31,60 @@ public interface FineGrainedPrivacy {
* @param dataRange representing the range for which the privacy is set
* @param privacyLevel the level of privacy for the given data range
*/
- public void put(DataRange dataRange, PrivacyLevel privacyLevel);
+ void put(DataRange dataRange, PrivacyLevel privacyLevel);
- public void putRow(int rowIndex, int rowLength, PrivacyLevel privacyLevel);
+ void putRow(int rowIndex, int rowLength, PrivacyLevel privacyLevel);
- public void putCol(int colIndex, int colLength, PrivacyLevel privacyLevel);
+ void putCol(int colIndex, int colLength, PrivacyLevel privacyLevel);
- public void putElement(int rowIndex, int colIndex, PrivacyLevel privacyLevel);
+ void putElement(int rowIndex, int colIndex, PrivacyLevel privacyLevel);
/**
* Get the data ranges and related privacy levels within given data search range.
* @param searchRange the range from which all privacy levels are retrieved
* @return all mappings from range to privacy level within the given search range
*/
- public Map<DataRange,PrivacyLevel> getPrivacyLevel(DataRange searchRange);
+ Map<DataRange,PrivacyLevel> getPrivacyLevel(DataRange searchRange);
/**
* Get the data ranges and related privacy levels of the element with the given index.
* @param searchIndex index of element
* @return all mappings from range to privacy level for the given search element
*/
- public Map<DataRange,PrivacyLevel> getPrivacyLevelOfElement(long[] searchIndex);
+ Map<DataRange,PrivacyLevel> getPrivacyLevelOfElement(long[] searchIndex);
/**
* Get all data ranges for the given privacy level.
* @param privacyLevel for which data ranges are found
* @return all data ranges with the given privacy level
*/
- public DataRange[] getDataRangesOfPrivacyLevel(PrivacyLevel privacyLevel);
+ DataRange[] getDataRangesOfPrivacyLevel(PrivacyLevel privacyLevel);
/**
* Remove all fine-grained privacy constraints.
*/
- public void removeAllConstraints();
+ void removeAllConstraints();
/**
* True if any fine-grained constraints has been set.
* @return true if any fine-grained constraint is set
*/
- public boolean hasConstraints();
+ boolean hasConstraints();
/**
* Get all fine-grained constraints as a map from privacy level to
* an array of data ranges represented as two-dimensional long arrays.
* @return map from privacy level to array of data ranges
*/
- public Map<String, long[][][]> getAllConstraints();
+ Map<String, long[][][]> getAllConstraints();
/**
* Return all fine-grained privacy constraints as an arraylist.
* @return all constraints
*/
- public ArrayList<Map.Entry<DataRange, PrivacyLevel>> getAllConstraintsList();
+ ArrayList<Map.Entry<DataRange, PrivacyLevel>> getAllConstraintsList();
- public PrivacyLevel[] getRowPrivacy(int numRows, int numCols);
+ PrivacyLevel[] getRowPrivacy(int numRows, int numCols);
- public PrivacyLevel[] getColPrivacy(int numRows, int numCols);
+ PrivacyLevel[] getColPrivacy(int numRows, int numCols);
}
diff --git a/src/main/java/org/apache/sysds/runtime/privacy/finegrained/FineGrainedPrivacyList.java b/src/main/java/org/apache/sysds/runtime/privacy/finegrained/FineGrainedPrivacyList.java
index 2fb1297..ac8b2eb 100644
--- a/src/main/java/org/apache/sysds/runtime/privacy/finegrained/FineGrainedPrivacyList.java
+++ b/src/main/java/org/apache/sysds/runtime/privacy/finegrained/FineGrainedPrivacyList.java
@@ -33,7 +33,7 @@ import org.apache.sysds.runtime.privacy.PrivacyConstraint.PrivacyLevel;
*/
public class FineGrainedPrivacyList implements FineGrainedPrivacy {
- private ArrayList<Map.Entry<DataRange, PrivacyLevel>> constraintCollection = new ArrayList<>();
+ private final ArrayList<Map.Entry<DataRange, PrivacyLevel>> constraintCollection = new ArrayList<>();
@Override
public PrivacyLevel[] getRowPrivacy(int numRows, int numCols) {
@@ -142,7 +142,7 @@ public class FineGrainedPrivacyList implements FineGrainedPrivacy {
});
Map<String, long[][][]> constraintMap = new HashMap<>();
constraintMap.put(PrivacyLevel.Private.name(), privateRanges.toArray(new long[0][][]));
- constraintMap.put(PrivacyLevel.PrivateAggregation.name(), privateRanges.toArray(new long[0][][]));
+ constraintMap.put(PrivacyLevel.PrivateAggregation.name(), aggregateRanges.toArray(new long[0][][]));
return constraintMap;
}
@@ -177,9 +177,8 @@ public class FineGrainedPrivacyList implements FineGrainedPrivacy {
@Override
public String toString(){
StringBuilder stringBuilder = new StringBuilder();
- for ( Map.Entry<DataRange,PrivacyLevel> entry : constraintCollection ){
- stringBuilder.append(entry.getKey().toString() + " : " + entry.getValue().name());
- }
+ for ( Map.Entry<DataRange,PrivacyLevel> entry : constraintCollection )
+ stringBuilder.append(String.format("%s : %s",entry.getKey().toString(), entry.getValue().name()));
return stringBuilder.toString();
}
}
diff --git a/src/main/java/org/apache/sysds/runtime/privacy/finegrained/FineGrainedPrivacyMap.java b/src/main/java/org/apache/sysds/runtime/privacy/finegrained/FineGrainedPrivacyMap.java
index ffd6048..294e866 100644
--- a/src/main/java/org/apache/sysds/runtime/privacy/finegrained/FineGrainedPrivacyMap.java
+++ b/src/main/java/org/apache/sysds/runtime/privacy/finegrained/FineGrainedPrivacyMap.java
@@ -33,7 +33,7 @@ import org.apache.sysds.runtime.privacy.PrivacyConstraint.PrivacyLevel;
*/
public class FineGrainedPrivacyMap implements FineGrainedPrivacy {
- private Map<DataRange, PrivacyLevel> constraintCollection = new LinkedHashMap<>();
+ private final Map<DataRange, PrivacyLevel> constraintCollection = new LinkedHashMap<>();
@Override
public void put(DataRange dataRange, PrivacyLevel privacyLevel) {
@@ -96,15 +96,15 @@ public class FineGrainedPrivacyMap implements FineGrainedPrivacy {
public Map<String, long[][][]> getAllConstraints() {
ArrayList<long[][]> privateRanges = new ArrayList<>();
ArrayList<long[][]> aggregateRanges = new ArrayList<>();
- constraintCollection.forEach((range, privacylevel) -> {
- if (privacylevel == PrivacyLevel.Private)
+ constraintCollection.forEach((range, privacyLevel) -> {
+ if (privacyLevel == PrivacyLevel.Private)
privateRanges.add(new long[][] { range.getBeginDims(), range.getEndDims() });
- else if (privacylevel == PrivacyLevel.PrivateAggregation)
+ else if (privacyLevel == PrivacyLevel.PrivateAggregation)
aggregateRanges.add(new long[][] { range.getBeginDims(), range.getEndDims() });
});
Map<String, long[][][]> constraintMap = new LinkedHashMap<>();
constraintMap.put(PrivacyLevel.Private.name(), privateRanges.toArray(new long[0][][]));
- constraintMap.put(PrivacyLevel.PrivateAggregation.name(), privateRanges.toArray(new long[0][][]));
+ constraintMap.put(PrivacyLevel.PrivateAggregation.name(), aggregateRanges.toArray(new long[0][][]));
return constraintMap;
}
diff --git a/src/main/java/org/apache/sysds/runtime/privacy/propagation/PrivacyPropagator.java b/src/main/java/org/apache/sysds/runtime/privacy/propagation/PrivacyPropagator.java
index 945df73..7e6c012 100644
--- a/src/main/java/org/apache/sysds/runtime/privacy/propagation/PrivacyPropagator.java
+++ b/src/main/java/org/apache/sysds/runtime/privacy/propagation/PrivacyPropagator.java
@@ -340,7 +340,7 @@ public class PrivacyPropagator
else {
MatrixBlock input1 = ec.getMatrixInput(inst.input1.getName());
MatrixBlock input2 = ec.getMatrixInput(inst.input2.getName());
- Propagator propagator = null;
+ Propagator propagator;
if ( inst.getAppendType() == AppendCPInstruction.AppendType.RBIND )
propagator = new RBindPropagator(input1, privacyConstraints[0], input2, privacyConstraints[1]);
else if ( inst.getAppendType() == AppendCPInstruction.AppendType.CBIND )
diff --git a/src/test/java/org/apache/sysds/test/functions/privacy/CheckedConstraintsLogTest.java b/src/test/java/org/apache/sysds/test/functions/privacy/CheckedConstraintsLogTest.java
index 1a76019..f47c75e 100644
--- a/src/test/java/org/apache/sysds/test/functions/privacy/CheckedConstraintsLogTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/privacy/CheckedConstraintsLogTest.java
@@ -55,7 +55,7 @@ public class CheckedConstraintsLogTest extends AutomatedTestBase {
public void addCheckedConstraintsSingleValue(){
EnumMap<PrivacyLevel,LongAdder> checked = getMap(PrivacyLevel.Private, 300);
CheckedConstraintsLog.addCheckedConstraints(checked);
- assertTrue(CheckedConstraintsLog.getCheckedConstraints().get(PrivacyLevel.Private).longValue() == 300);
+ assertEquals(300, CheckedConstraintsLog.getCheckedConstraints().get(PrivacyLevel.Private).longValue());
}
@Test
@@ -64,7 +64,7 @@ public class CheckedConstraintsLogTest extends AutomatedTestBase {
CheckedConstraintsLog.addCheckedConstraints(checked);
EnumMap<PrivacyLevel,LongAdder> checked2 = getMap(PrivacyLevel.Private, 150);
CheckedConstraintsLog.addCheckedConstraints(checked2);
- assertTrue(CheckedConstraintsLog.getCheckedConstraints().get(PrivacyLevel.Private).longValue() == 450);
+ assertEquals(450, CheckedConstraintsLog.getCheckedConstraints().get(PrivacyLevel.Private).longValue());
}
@Test
@@ -89,9 +89,9 @@ public class CheckedConstraintsLogTest extends AutomatedTestBase {
@Test
public void addLoadedConstraintsSingleValue(){
- Integer n = 12;
+ int n = 12;
for (int i = 0; i < n; i++)
CheckedConstraintsLog.addLoadedConstraint(PrivacyLevel.Private);
- assertEquals(n.longValue(), CheckedConstraintsLog.getLoadedConstraints().get(PrivacyLevel.Private).longValue());
+ assertEquals(n, CheckedConstraintsLog.getLoadedConstraints().get(PrivacyLevel.Private).longValue());
}
}