layout | title |
---|---|
homepage |
Available operators in PrivacyStreams |
Type | API & Description |
---|---|
Item,Number |
ArithmeticOperators.add(String numField1, String numField2) Add the values of two fields in an item. - numField1 : the name of the first field- numField2 : the name of the second field |
Item,Integer |
ArithmeticOperators.castToInt(String numField) Cast a number to integer type. - numField : the name of the number field |
Item,Long |
ArithmeticOperators.castToLong(String numField) Cast a number to long type. - numField : the name of the number field |
Item,Number |
ArithmeticOperators.divide(String numField1, String numField2) Divide the values of two fields in an item. - numField1 : the name of the first field- numField2 : the name of the second field |
Item,Number |
ArithmeticOperators.mode(String numField1, String numField2) Mode the values of two fields in an item. - numField1 : the name of the first field- numField2 : the name of the second field |
Item,Number |
ArithmeticOperators.multiply(String numField1, String numField2) Multiply the values of two fields in an item. - numField1 : the name of the first field- numField2 : the name of the second field |
Item,Double |
ArithmeticOperators.roundDown(String numField, Number value) Round down a number. For example, given an item with field "x"=0.027, roundUp("x", 0.01) will produce 0.02. - numField : the name of the number field- value : the value to round |
Item,Double |
ArithmeticOperators.roundUp(String numField, Number value) Round up a number. For example, given an item with field "x"=17, roundUp("x", 10) will produce 20.- numField : the name of the number field- value : the value to round |
Item,Number |
ArithmeticOperators.sub(String numField1, String numField2) Subtract the values of two fields in an item. - numField1 : the name of the first field- numField2 : the name of the second field |
Item,Double |
AudioOperators.calcLoudness(String audioDataField) Calculate the average (RMS) loudness of the audio specified by an AudioData field. The loudness is an double number indicating the sound pressure level in dB. - audioDataField : the name of the AudioData field. |
Item,Double |
AudioOperators.convertAmplitudeToLoudness(String amplitudeField) Calculate loudness (in decibels) based on an amplitude value. The amplitude should be a number from 0 to 32767. - amplitudeField : the name of the amplitude field. |
Item,List<Integer> |
AudioOperators.getAmplitudeSamples(String audioDataField) Get the amplitude samples of the audio specified by an AudioData field. Each amplitude sample is an Integer from 0 to 32767. The amplitude sampling rate can be configured at Globals.AudioConfig.amplitudeSamplingRate ;- audioDataField : the name of the AudioData field. |
Item,String |
AudioOperators.getFilepath(String audioDataField) Get the file path of the audio specified by an AudioData field. The path might point to a temporary audio file if it is not from storage. To permanently save the file, you need to copy the file to another file path. - audioDataField : the name of AudioData field |
Item,Integer |
AudioOperators.getMaxAmplitude(String audioDataField) Get the max amplitude of the audio specified by an AudioData field. The amplitude is an Integer from 0 to 32767. - audioDataField : the name of the AudioData field. |
Item,Boolean |
AudioOperators.hasHumanVoice(String audioDataField) Detect human voice from the audio. Return true if there is human voice. - audioDataField : the name of AudioData field |
PStream,List<Item> |
Collectors.toItemList() Collect the PStream to a list of Items. |
Item,Boolean |
Comparators.eq(String field, TValue valueToCompare) Check if the value of a field equals to a given value. - field : the name of the field to compare- valueToCompare : the value to compare with- <TValue> : the type of value |
Item,Boolean |
Comparators.gt(String field, Number valueToCompare) Check if the value of a field is greater than a given value. - field : the name of the field to compare- valueToCompare : the value to compare with |
Item,Boolean |
Comparators.gte(String field, Number valueToCompare) Check if the value of a field is greater than or equal to a given value. - field : the name of the field to compare- valueToCompare : the value to compare with |
Item,Boolean |
Comparators.lt(String field, Number valueToCompare) Check if the value of a field is less than a given value. - field : the name of the field to compare- valueToCompare : the value to compare with |
Item,Boolean |
Comparators.lte(String field, Number valueToCompare) Check if the value of a field is less than or equal to a given value. - field : the name of the field to compare- valueToCompare : the value to compare with |
Item,Boolean |
Comparators.ne(String field, TValue valueToCompare) Check if the value of a field is not equal to a given value. - field : the name of the field to compare- valueToCompare : the value to compare with- <TValue> : the type of value |
T,Void |
DebugOperators.debug() Print the input for debugging. - <T> : the input type |
T,T |
DebugOperators.logAs(String logTag) Log the input and return as original. - logTag : the log tag to use in logging- <T> : the input/output type |
T,T |
DebugOperators.logOverSocket(String logTag) Log the input in socket and return as original. - logTag : the log tag to use in logging- <T> : the input/output type |
Void,String |
DeviceOperators.getDeviceId() Get device id. |
Void,Boolean |
DeviceOperators.isWifiConnected() Check if wifi is connected. |
Item,Double |
GeolocationOperators.distanceBetween(String latLonField1, String latLonField2) Get the distance between two locations (in meters). - latLonField1 : the first location- latLonField2 : the second location |
Item,LatLon |
GeolocationOperators.distort(String latLonField, double radius) Distort the coordinates value of a field and return the distorted coordinates. The distorted coordinates is an instance of LatLon class.- latLonField : the coordinates field to distort- radius : the distance to distort, in meters |
Item,Boolean |
GeolocationOperators.inCircle(String latLonField, double centerLat, double centerLng, double radius) Check if the coordinates specified by a LatLon field is a location in an given circular region. - latLonField : the LatLon field to check- centerLat : latitude of the center of the area- centerLng : longitude of the center of the area- radius : radius of the region, in meters |
Item,Boolean |
GeolocationOperators.inSquare(String latLonField, double minLat, double minLng, double maxLat, double maxLng) Check if the coordinates specified by a LatLon field is a location in an given square region. - latLonField : the LatLon field to check- minLat : the minimum latitude of the region- minLng : the minimum longitude of the region- maxLat : the maximum latitude of the region- maxLng : the maximum longitude of the region |
T,Void |
IOOperators.uploadToDropbox(Function<T,String> filePathGenerator, boolean append) Upload an object to Dropbox, the output file path will be generated with a function. If file already exists and append is true, the object will be appended to the file; If append is false, the object will overwrite the existing file. This operator requires Dropbox configured (see https://privacystreams.github.io/pages/enable_accessibility.html). This provider requires android.permission.INTERNET permission.- filePathGenerator : the function to generate the output file path each time- <T> : the type of input object |
T,Void |
IOOperators.uploadToDropbox(String filePath, boolean append) Upload an object to Dropbox, the output file will be at filePath . If there is a file already at the filePath , the item will be appended to the file. This operator requires Dropbox configured (see https://privacystreams.github.io/pages/enable_accessibility.html). This provider requires android.permission.INTERNET permission.- filePath : the output file path- <T> : the type of input object |
T,Void |
IOOperators.writeToFile(Function<T,String> filePathGenerator, boolean isPublic, boolean append) Write an object to a local file, the output file path will be generated with a function. If isPublic is true, the file will be created in /sdcard/ folder, which can be accessed by other apps. If isPublic is false, the file will be created in the app data folder, which can not be accessed by other apps; If append is true, the object will be appended to the file; If append is false, the object will overwrite the file. This provider requires android.permission.WRITE_EXTERNAL_STORAGE permission.- filePathGenerator : the function to generate the output file path each time- isPublic : whether the file is public. If set to true, will requires WRITE_EXTERNAL_STORAGE permission.- append : whether the object will be appended to the file- <T> : the type of input object |
T,Void |
IOOperators.writeToFile(String filePath, boolean isPublic, boolean append) Write an object to a local file, the output file will be at filePath . If isPublic is true, the file will be created in /sdcard/ folder, which can be accessed by other apps. If isPublic is false, the file will be created in the app data folder, which can not be accessed by other apps; If append is true, the object will be appended to the file; If append is false, the object will overwrite the file. This provider requires android.permission.WRITE_EXTERNAL_STORAGE permission.- filePath : the output file path- isPublic : whether the file is public. If set to true, will require WRITE_EXTERNAL_STORAGE permission.- append : whether the object will be appended to the file- <T> : the type of input object |
Item,ImageData |
ImageOperators.blur(String imageDataField) Blur the image specified by an ImageData field, and return the blurred ImageData instance. - imageDataField : the name of ImageData field |
Item,Integer |
ImageOperators.countFaces(String imageDataField) Count faces in an image. This operator outputs the number of faces in the image. - imageDataField : the name of ImageData field |
Item,String |
ImageOperators.extractText(String imageDataField) Extract text in an image. This operator outputs the text in the images. - imageDataField : the name of ImageData field |
Item,Bitmap |
ImageOperators.getBitmap(String imageDataField) Get the Bitmap of the image specified by an ImageData field. - imageDataField : the name of ImageData field |
Item,ExifInterface |
ImageOperators.getExif(String imageDataField) Retrieve the EXIF of the image specified by an ImageData field. The EXIF information is an instance of Android ExifInterface class.- imageDataField : the name of ImageData field |
Item,String |
ImageOperators.getFilepath(String imageDataField) Get the file path of the image specified by an ImageData field. The path might point to a temporary image file if it is not from storage. To permanently save the file, you need to copy the file to another file path. - imageDataField : the name of ImageData field |
Item,LatLon |
ImageOperators.getLatLon(String imageDataField) Retrieve the location information of the image specified by an ImageData field. The location information is an instance of LatLon class.- imageDataField : the name of ImageData field |
Item,Boolean |
ImageOperators.hasCharacter(String imageDataField) Detect characters in an image. This operator outputs true if there is at least one character in the image. - imageDataField : the name of ImageData field |
Item,Boolean |
ImageOperators.hasFace(String imageDataField) Detect faces in an image. This operator outputs true if there is at least one face in the image. - imageDataField : the name of ImageData field |
Item,Boolean |
ItemOperators.containsField(String fieldToCheck) Check whether the item contains a given field. - fieldToCheck : the name of field to check |
Item,Item |
ItemOperators.excludeFields(String fieldsToExclude) Project an item by excluding some fields. The excluded fields will be removed from the item. - fieldsToExclude : the names of the fields to exclude. |
Item,TValue |
ItemOperators.getField(String field) Get the value of a given field in the item. - field : the name of the field to get.- <TValue> : the type of field value |
Item,Item |
ItemOperators.getSubItem(String subItemField) Get the sub item value of a given field. - subItemField : the name of sub item field. |
Item,Item |
ItemOperators.includeFields(String fieldsToInclude) Project an item by including some fields. The fields that are not included will be removed from the item. - fieldsToInclude : the names of the fields to include. |
Item,Boolean |
ItemOperators.isFieldIn(String field, TValue listToCompare) Check whether the value of a field is in a given list. - field : the field name- listToCompare : the list to check whether the field is in- <TValue> : the type of list elements |
Item,Item |
ItemOperators.setField(String fieldToSet, Function<Item,TValue> fieldValueComputer) Set the value of a new field with a function. - fieldToSet : the name of the field to set, it can be a new name.- fieldValueComputer : the function to compute the value of the field based on the item.- <TValue> : the type of the new field value. |
Item,Item |
ItemOperators.setField(String fieldToSet, TValue fieldValue) Set the value of a new field to a given value. - fieldToSet : the name of the field to set, it can be a new name.- fieldValue : the value of the field.- <TValue> : the type of the new field value. |
Item,Item |
ItemOperators.setGroupField(String fieldToSet, Function<List<Item>,TValue> fieldValueComputer) Set a field to a new value for each item in the stream. This transformation can only be used after invoking group methods ( groupBy , localGroupBy , etc.). The value is computed with a function that takes the grouped items as input. Eg. setGroupField("count", StatisticOperators.count()) will set a new field "count" to each item, which represents the number of items in the grouped sub stream.- fieldToSet : the new field name- fieldValueComputer : the function to compute the new field value, which takes the list of grouped items as input.- <TValue> : the type of the new field value |
Item,Item |
ItemOperators.setIndependentField(String fieldToSet, Function<Void,TValue> valueGenerator) Set the value of a new field with a value generator function. The value generator function is independent from current item, which does not need a input (Void). The value generator will be evaluated on demand at runtime. For example, setIndependentField("time", TimeOperators.getCurrentTime()) will set the field "time" to a timestamp in each item; setIndependentField("wifiStatus", DeviceOperators.isWifiConnected()) will set the field "wifiStatus" to a boolean indicating whether wifi is connected in each item.- fieldToSet : the name of the field to set, it can be a new name or an existing name.- valueGenerator : the function to compute the field value.- <TValue> : the type of the new field value. |
Item,Tout |
ItemOperators.wrapSubStreamFunction(Function<List<Item>,Tout> subStreamFunction) Output the grouped items in the item with a function. This function must be applied to a group item, i.e. must be used after groupBy or localGroupBy .- subStreamFunction : the function to output sub stream.- <Tout> : the type of sub stream collection result. |
Item,Tout |
ItemOperators.wrapValueGenerator(Function<Void,Tout> valueGenerator) Wrap a valueGenerator that takes Void as input type to a function that takes Item as input type. - valueGenerator : the function that takes Void as input.- <Tout> : the type of value generator result. |
List<Item>,List<Item> |
ItemsOperators.asFieldList() Collect the items in the stream to a list. Each element in the list is an instance of Item. |
List<Item>,List<TValue> |
ItemsOperators.asFieldList(String fieldToCollect) Collect the values of a field in the stream to a list. Each element in the list is the value of the specified field in an item. - fieldToCollect : the name of the field to collect. |
List<Item>,Item |
ItemsOperators.getItemWithLeast(String listField) Select an item from the items that has the least elements in a list field. - listField : the name of the list field |
List<Item>,Item |
ItemsOperators.getItemWithMax(String numField) Select an item from the items that has the max value of a field. - numField : the name of the number field |
List<Item>,Item |
ItemsOperators.getItemWithMin(String numField) Select an item from the items that has the min value of a field. - numField : the name of the number field |
List<Item>,Item |
ItemsOperators.getItemWithMost(String listField) Select an item from the items that has the most elements in a list field. - listField : the name of the list field |
Item,Boolean |
ListOperators.contains(String listField, Object value) Check whether the list specified by a field contains a given value. - listField : the name of the list field- value : the value to check if is in the list |
Item,Integer |
ListOperators.count(String listField) Count the number of elements in the list specified by a field. - listField : the name of the field to count |
Item,Boolean |
ListOperators.intersects(String listField, TValue listToCompare) Check whether the list specified by a field intersects with a given list. - listField : the name of the list field- listToCompare : the list to compare |
Item,Number |
ListOperators.max(String numListField) Get the max value of a field in the stream. The list elements must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no number in the list), the result will be null. - numListField : the name of the field, the field value must be a list of numbers. |
Item,Double |
ListOperators.mean(String numListField) Calculate the average of the numbers specified by a field. The list elements must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no number in the list), the result will be null. - numListField : the name of the field, the field value must be a list of numbers. |
Item,Number |
ListOperators.median(String numListField) Get the median value of a field in the stream. The list elements must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no number in the list), the result will be null. - numListField : the name of the field, the field value must be a list of numbers. |
Item,Number |
ListOperators.min(String numListField) Get the min value of a field in the stream. The list elements must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no number in the list), the result will be null. - numListField : the name of the field, the field value must be a list of numbers. |
Item,Number |
ListOperators.mode(String numListField) Get the mode value of a field in the stream. The list elements must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no number in the list), the result will be null. - numListField : the name of the field, the field value must be a list of numbers. |
Item,Double |
ListOperators.range(String numListField) Calculate the range of the numbers specified by a field. The list elements must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no number in the list), the result will be null. - numListField : the name of the field, the field value must be a list of numbers. |
Item,Double |
ListOperators.rms(String numListField) Calculate the RMS (root mean square) of the numbers specified by a field. The list elements must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no number in the list), the result will be null. - numListField : the name of the field, the field value must be a list of numbers. |
Item,Double |
ListOperators.sum(String numListField) Calculate the sum of the numbers specified by a field. The list elements must be in Number type, such as Integer, Double, Long, ... If there is no valid field value in the stream, the "sum" result will be 0.0 - numListField : the name of the field, the field value must be a list of numbers. |
Item,Double |
ListOperators.variance(String numListField) Calculate the variance of the numbers specified by a field. The list elements must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no number in the list), the result will be null. - numListField : the name of the field, the field value must be a list of numbers. |
Item,Boolean |
LogicOperators.and(Function<Item,Boolean> predicate1, Function<Item,Boolean> predicate2) Compute the logical AND of two functions. - predicate1 : the first function to test an item- predicate2 : the second function to test an item |
Item,Boolean |
LogicOperators.not(Function<Item,Boolean> predicate) Compute the logical NOT of a function. - predicate : the function to test an item |
Item,Boolean |
LogicOperators.or(Function<Item,Boolean> predicate1, Function<Item,Boolean> predicate2) Compute the logical OR of two functions. - predicate1 : the first function to test an item- predicate2 : the second function to test an item |
List<Item>,Integer |
StatisticOperators.count() Count the number of items in the stream and output the number. |
List<Item>,Integer |
StatisticOperators.count(String field) Count the number of valid fields in the stream and output the number. - field : the name of the field to count |
List<Item>,Number |
StatisticOperators.max(String numField) Get the max value of a field in the stream. The field values must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no item in the stream), the result will be null. - numField : the name of the field, the field value must be a number. |
List<Item>,Double |
StatisticOperators.mean(String numField) Calculate the average of the number values of a field in the stream. The field values must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no item in the stream), the result will be null. - numField : the name of the field, the field value must be a number. |
List<Item>,Number |
StatisticOperators.median(String numField) Get the median value of a field in the stream. The field values must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no item in the stream), the result will be null. - numField : the name of the field, the field value must be a number. |
List<Item>,Number |
StatisticOperators.min(String numField) Get the min value of a field in the stream. The field values must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no item in the stream), the result will be null. - numField : the name of the field, the field value must be a number. |
List<Item>,Number |
StatisticOperators.mode(String numField) Get the mode value of a field in the stream. The field values must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no item in the stream), the result will be null. - numField : the name of the field, the field value must be a number. |
List<Item>,Double |
StatisticOperators.range(String numField) Calculate the range of the number values of a field in the stream. The field values must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no item in the stream), the result will be null. - numField : the name of the field, the field value must be a number. |
List<Item>,Double |
StatisticOperators.rms(String numField) Calculate the RMS (root mean square) of the number values of a field in the stream. The field values must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no item in the stream), the result will be null. - numField : the name of the field, the field value must be a number. |
List<Item>,Double |
StatisticOperators.sum(String numField) Calculate the sum of the number values of a field in the stream. The field values must be in Number type, such as Integer, Double, Long, ... If there is no valid field value in the stream, the "sum" result will be 0.0 - numField : the name of the field, the field value must be a number. |
List<Item>,Double |
StatisticOperators.variance(String numField) Calculate the variance of the number values of a field in the stream. The field values must be in Number type, such as Integer, Double, Long, ... If calculation fails (e.g. there is no item in the stream), the result will be null. - numField : the name of the field, the field value must be a number. |
Item,Boolean |
StringOperators.contains(String stringField, String searchString) Check whether the string value of a field contains a certain substring. - stringField : the name of the string field- searchString : the substring to search |
Item,String |
StringOperators.elide(String stringField, int start, int end) Elide a substring in the string value of a field. - stringField : the name of the string field to calculate length- start : the position to start from, negative means count back from the end of the String by this many characters- end : the position to end at (exclusive), negative means count back from the end of the String by this many characters |
Item,Integer |
StringOperators.indexOf(String stringField, String searchString) Get the index of a substring in the string value of a field. - stringField : the name of the string field- searchString : the substring to search |
Item,Integer |
StringOperators.length(String stringField) Get the length of the string value of a field. - stringField : the name of the string field to calculate length |
Item,String |
StringOperators.md5(String stringField) Get the MD5-hashed value of the string value of a field. - stringField : the name of the string field to perform hash. |
Item,String |
StringOperators.replace(String stringField, String searchString, String replaceString) Replace a substring to a new string in the string value of a field. - stringField : the name of the string field- searchString : the substring to search- replaceString : the string used to replace the searchString |
Item,String |
StringOperators.sha1(String stringField) Get the SHA1-hashed value of the string value of a field. - stringField : the name of the string field to perform hash. |
Item,String |
StringOperators.sha256(String stringField) Get the SHA256-hashed value of the string value of a field. - stringField : the name of the string field to perform hash. |
Item,String |
StringOperators.subString(String stringField, int start, int end) Get a substring of the string value of a field. - stringField : the name of the string field to calculate length- start : the position to start from, negative means count back from the end of the String by this many characters- end : the position to end at (exclusive), negative means count back from the end of the String by this many characters |
Item,String |
TimeOperators.formatTime(String timestampField, String timeFormat) Convert the timestamp value of a field to a string based a given format. - timestampField : the name of timestamp field- timeFormat : the format of time string |
Void,Long |
TimeOperators.getCurrentTime() Get current timestamp. |
Item,Boolean |
TimeOperators.recent(String timestampField, Long duration) Check whether the timestamp field value of a field is recent from now (less than a given duration). - timestampField : the name of the timestamp field- duration : the millisecond duration from now |
Item,Boolean |
TimeOperators.since(String timestampField, Long timestampToCompare) Check whether the timestamp value of a field is after a given timestamp. - timestampField : the name of the timestamp field- timestampToCompare : the timestamp to compare |