Skip to content

Commit

Permalink
#100: implemented exif image visibility PRIVATE if tags contain PRIVA…
Browse files Browse the repository at this point in the history
…TE else PUBLIC. fix sql
  • Loading branch information
k3b committed Dec 28, 2017
1 parent 797c4d8 commit d0b9a31
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -803,7 +803,10 @@ public static Long insertOrUpdateMediaDatabase(String dbgContext, Context contex

/** every database insert should go through this. adds logging if enabled */
public static Uri execInsert(String dbgContext, Context context, ContentValues values) {
Uri result = context.getContentResolver().insert(SQL_TABLE_EXTERNAL_CONTENT_URI, values);
Uri providerUri = (null != values.get(SQL_COL_EXT_MEDIA_TYPE)) ? SQL_TABLE_EXTERNAL_CONTENT_URI_FILE : SQL_TABLE_EXTERNAL_CONTENT_URI;

// on my android-4.4 insert with media_type=1001 (private) does insert with media_type=1 (image)
Uri result = context.getContentResolver().insert(providerUri, values);
if (Global.debugEnabledSql) {
Log.i(Global.LOG_CONTEXT, dbgContext + ":FotoSql.execInsert" +
values.toString() + " => " + result);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import de.k3b.database.QueryParameter;
import de.k3b.io.ListUtils;
import de.k3b.io.VISIBILITY;
import de.k3b.media.ExifInterfaceEx;
import de.k3b.media.MediaUtil;
import de.k3b.media.MediaXmpSegment;
import de.k3b.media.MetaWriterExifXml;
Expand Down Expand Up @@ -236,6 +237,15 @@ public static void addWhereTagsIncluded(QueryParameter resultQuery, List<String>
}
}

public static int fixPrivate(Context context) {
// update ... set media_type=1001 where media_type=1 and tags like '%;PRIVATE;%'
ContentValues values = new ContentValues();
values.put(SQL_COL_EXT_MEDIA_TYPE, MEDIA_TYPE_IMAGE_PRIVATE);
String where = TagSql.FILTER_EXPR_PUBLIC + " AND " + TagSql.FILTER_EXPR_TAGS_INCLUDED;
return exexUpdateImpl("Fix visibility private", context, values, where, new String[] {"%;" + ExifInterfaceEx.TAG_PRIVATE +
";%"});
}

public static void setTags(ContentValues values, Date xmpFileModifyDate, String... tags) {
values.put(SQL_COL_EXT_TAGS, TagConverter.asDbString("", tags));
setXmpFileModifyDate(values, xmpFileModifyDate);
Expand Down Expand Up @@ -333,7 +343,7 @@ public static int getTagRefCount(Context context, List<Tag> tags) {
return c.getInt(0);
}
} catch (Exception ex) {
Log.e(Global.LOG_CONTEXT, "FotoSql.execGetGeoRectangle(): error executing " + query, ex);
Log.e(Global.LOG_CONTEXT, "FotoSql.getTagRefCount(): error executing " + query, ex);
} finally {
if (c != null) c.close();
}
Expand Down
10 changes: 6 additions & 4 deletions app/src/main/java/de/k3b/android/util/MediaScanner.java
Original file line number Diff line number Diff line change
Expand Up @@ -165,15 +165,17 @@ public static int hideFolderMedia(Activity context, String path) {
public int updateMediaDatabase_Android42(Context context, String[] oldPathNames, String... newPathNames) {
final boolean hasNew = excludeNomediaFiles(newPathNames) > 0;
final boolean hasOld = excludeNomediaFiles(oldPathNames) > 0;
int result = 0;

if (hasNew && hasOld) {
return renameInMediaDatabase(context, oldPathNames, newPathNames);
result = renameInMediaDatabase(context, oldPathNames, newPathNames);
} else if (hasOld) {
return deleteInMediaDatabase(context, oldPathNames);
result = deleteInMediaDatabase(context, oldPathNames);
} if (hasNew) {
return insertIntoMediaDatabase(context, newPathNames);
result = insertIntoMediaDatabase(context, newPathNames);
}
return 0;
TagSql.fixPrivate(context);
return result;
}

/**
Expand Down
2 changes: 1 addition & 1 deletion fotolib2/src/main/java/de/k3b/media/ExifInterfaceEx.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public class ExifInterfaceEx extends ExifInterface implements IMetaApi {
private static final String LIST_DELIMITER = ";";

// if photo has this tag it has visibility PRIVATE
private static final String TAG_PRIVATE = "PRIVATE";
public static final String TAG_PRIVATE = "PRIVATE";

static {
sExifDateTimeFormatter = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
Expand Down
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
startParameter.offline = true
// startParameter.offline = true

// include ':app', 'fotolib2', 'fotoview.library', ':osmdroid-android' , ':k3b-geoHelper' , ':fotoview.library'
include ':app', ':fotolib2', ':showexif'

0 comments on commit d0b9a31

Please sign in to comment.