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());
 	}
 }