SKIP_NULL_FIELDS / MetaAttributes.toJson() / MetaAttributes.toObject()
This commit is contained in:
parent
b9f0a9ef0e
commit
202c9d2dd5
|
@ -26,14 +26,12 @@ import java.util.TreeSet;
|
||||||
|
|
||||||
import org.codehaus.groovy.runtime.DefaultGroovyMethods;
|
import org.codehaus.groovy.runtime.DefaultGroovyMethods;
|
||||||
|
|
||||||
import com.cedarsoftware.util.io.JsonReader;
|
|
||||||
import com.cedarsoftware.util.io.JsonWriter;
|
|
||||||
|
|
||||||
import groovy.lang.Closure;
|
import groovy.lang.Closure;
|
||||||
import groovy.lang.Range;
|
import groovy.lang.Range;
|
||||||
import net.filebot.MediaTypes;
|
import net.filebot.MediaTypes;
|
||||||
import net.filebot.MetaAttributeView;
|
import net.filebot.MetaAttributeView;
|
||||||
import net.filebot.media.MediaDetection;
|
import net.filebot.media.MediaDetection;
|
||||||
|
import net.filebot.media.MetaAttributes;
|
||||||
import net.filebot.similarity.NameSimilarityMetric;
|
import net.filebot.similarity.NameSimilarityMetric;
|
||||||
import net.filebot.similarity.Normalization;
|
import net.filebot.similarity.Normalization;
|
||||||
import net.filebot.similarity.SimilarityMetric;
|
import net.filebot.similarity.SimilarityMetric;
|
||||||
|
@ -352,11 +350,11 @@ public class ScriptShellMethods {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String objectToJson(Object self) throws IOException {
|
public static String objectToJson(Object self) throws IOException {
|
||||||
return JsonWriter.objectToJson(self);
|
return MetaAttributes.toJson(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Object jsonToObject(String self) throws IOException {
|
public static Object jsonToObject(String self) throws IOException {
|
||||||
return JsonReader.jsonToJava(self);
|
return MetaAttributes.toObject(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static File getStructurePathTail(File self) throws Exception {
|
public static File getStructurePathTail(File self) throws Exception {
|
||||||
|
|
|
@ -36,8 +36,6 @@ import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import com.cedarsoftware.util.io.JsonWriter;
|
|
||||||
|
|
||||||
import net.filebot.ApplicationFolder;
|
import net.filebot.ApplicationFolder;
|
||||||
import net.filebot.Cache;
|
import net.filebot.Cache;
|
||||||
import net.filebot.CacheType;
|
import net.filebot.CacheType;
|
||||||
|
@ -47,6 +45,7 @@ import net.filebot.MetaAttributeView;
|
||||||
import net.filebot.Settings;
|
import net.filebot.Settings;
|
||||||
import net.filebot.WebServices;
|
import net.filebot.WebServices;
|
||||||
import net.filebot.hash.HashType;
|
import net.filebot.hash.HashType;
|
||||||
|
import net.filebot.media.MetaAttributes;
|
||||||
import net.filebot.media.NamingStandard;
|
import net.filebot.media.NamingStandard;
|
||||||
import net.filebot.mediainfo.MediaInfo;
|
import net.filebot.mediainfo.MediaInfo;
|
||||||
import net.filebot.mediainfo.MediaInfo.StreamKind;
|
import net.filebot.mediainfo.MediaInfo.StreamKind;
|
||||||
|
@ -990,7 +989,7 @@ public class MediaBindingBean {
|
||||||
|
|
||||||
@Define("json")
|
@Define("json")
|
||||||
public String getInfoObjectDump() {
|
public String getInfoObjectDump() {
|
||||||
return JsonWriter.objectToJson(infoObject);
|
return MetaAttributes.toJson(infoObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
public File getInferredMediaFile() {
|
public File getInferredMediaFile() {
|
||||||
|
|
|
@ -60,7 +60,7 @@ public class MetaAttributes {
|
||||||
|
|
||||||
public void setObject(Object object) {
|
public void setObject(Object object) {
|
||||||
try {
|
try {
|
||||||
metaAttributeView.put(METADATA_KEY, JsonWriter.objectToJson(object, singletonMap(JsonWriter.TYPE_NAME_MAP, JSON_TYPE_MAP)));
|
metaAttributeView.put(METADATA_KEY, toJson(object));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
@ -68,13 +68,9 @@ public class MetaAttributes {
|
||||||
|
|
||||||
public Object getObject() {
|
public Object getObject() {
|
||||||
try {
|
try {
|
||||||
String jsonObject = metaAttributeView.get(METADATA_KEY);
|
String json = metaAttributeView.get(METADATA_KEY);
|
||||||
if (jsonObject != null && jsonObject.length() > 0) {
|
if (json != null && json.length() > 0) {
|
||||||
Map<String, Object> options = new HashMap<String, Object>(2);
|
return toObject(json);
|
||||||
options.put(JsonReader.TYPE_NAME_MAP, JSON_TYPE_MAP);
|
|
||||||
|
|
||||||
// options must be a modifiable map
|
|
||||||
return JsonReader.jsonToJava(jsonObject, options);
|
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
|
@ -87,4 +83,20 @@ public class MetaAttributes {
|
||||||
metaAttributeView.put(METADATA_KEY, null);
|
metaAttributeView.put(METADATA_KEY, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String toJson(Object object) {
|
||||||
|
Map<String, Object> options = new HashMap<String, Object>();
|
||||||
|
options.put(JsonWriter.TYPE_NAME_MAP, MetaAttributes.JSON_TYPE_MAP);
|
||||||
|
options.put(JsonWriter.SKIP_NULL_FIELDS, true);
|
||||||
|
|
||||||
|
return JsonWriter.objectToJson(object, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Object toObject(String json) {
|
||||||
|
Map<String, Object> options = new HashMap<String, Object>();
|
||||||
|
options.put(JsonReader.TYPE_NAME_MAP, JSON_TYPE_MAP);
|
||||||
|
|
||||||
|
// options must be a modifiable map
|
||||||
|
return JsonReader.jsonToJava(json, options);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,9 +58,6 @@ import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
|
||||||
import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
|
import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
|
||||||
import org.fife.ui.rtextarea.RTextScrollPane;
|
import org.fife.ui.rtextarea.RTextScrollPane;
|
||||||
|
|
||||||
import com.cedarsoftware.util.io.JsonReader;
|
|
||||||
import com.cedarsoftware.util.io.JsonWriter;
|
|
||||||
|
|
||||||
import net.filebot.ResourceManager;
|
import net.filebot.ResourceManager;
|
||||||
import net.filebot.Settings;
|
import net.filebot.Settings;
|
||||||
import net.filebot.UserFiles;
|
import net.filebot.UserFiles;
|
||||||
|
@ -68,6 +65,7 @@ import net.filebot.format.BindingException;
|
||||||
import net.filebot.format.ExpressionFormat;
|
import net.filebot.format.ExpressionFormat;
|
||||||
import net.filebot.format.MediaBindingBean;
|
import net.filebot.format.MediaBindingBean;
|
||||||
import net.filebot.mac.MacAppUtilities;
|
import net.filebot.mac.MacAppUtilities;
|
||||||
|
import net.filebot.media.MetaAttributes;
|
||||||
import net.filebot.mediainfo.MediaInfo;
|
import net.filebot.mediainfo.MediaInfo;
|
||||||
import net.filebot.util.DefaultThreadFactory;
|
import net.filebot.util.DefaultThreadFactory;
|
||||||
import net.filebot.util.ExceptionUtilities;
|
import net.filebot.util.ExceptionUtilities;
|
||||||
|
@ -397,7 +395,7 @@ public class FormatDialog extends JDialog {
|
||||||
try {
|
try {
|
||||||
// restore sample from user preferences
|
// restore sample from user preferences
|
||||||
String sample = mode.persistentSample().getValue();
|
String sample = mode.persistentSample().getValue();
|
||||||
info = JsonReader.jsonToJava(sample);
|
info = MetaAttributes.toObject(sample);
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
throw new NullPointerException();
|
throw new NullPointerException();
|
||||||
}
|
}
|
||||||
|
@ -406,7 +404,7 @@ public class FormatDialog extends JDialog {
|
||||||
// restore sample from application properties
|
// restore sample from application properties
|
||||||
ResourceBundle bundle = ResourceBundle.getBundle(getClass().getName());
|
ResourceBundle bundle = ResourceBundle.getBundle(getClass().getName());
|
||||||
String sample = bundle.getString(mode.key() + ".sample");
|
String sample = bundle.getString(mode.key() + ".sample");
|
||||||
info = JsonReader.jsonToJava(sample);
|
info = MetaAttributes.toObject(sample);
|
||||||
} catch (Exception illegalSample) {
|
} catch (Exception illegalSample) {
|
||||||
debug.log(Level.SEVERE, "Illegal Sample", e);
|
debug.log(Level.SEVERE, "Illegal Sample", e);
|
||||||
}
|
}
|
||||||
|
@ -594,7 +592,7 @@ public class FormatDialog extends JDialog {
|
||||||
|
|
||||||
// remember sample
|
// remember sample
|
||||||
try {
|
try {
|
||||||
mode.persistentSample().setValue(info == null ? "" : JsonWriter.objectToJson(info));
|
mode.persistentSample().setValue(info == null ? "" : MetaAttributes.toJson(info));
|
||||||
persistentSampleFile.setValue(file == null ? "" : sample.getFileObject().getAbsolutePath());
|
persistentSampleFile.setValue(file == null ? "" : sample.getFileObject().getAbsolutePath());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
debug.log(Level.WARNING, e.getMessage(), e);
|
debug.log(Level.WARNING, e.getMessage(), e);
|
||||||
|
|
|
@ -21,7 +21,6 @@ import java.awt.event.ActionEvent;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
@ -50,7 +49,6 @@ import javax.swing.SwingWorker;
|
||||||
import javax.swing.border.CompoundBorder;
|
import javax.swing.border.CompoundBorder;
|
||||||
import javax.swing.border.TitledBorder;
|
import javax.swing.border.TitledBorder;
|
||||||
|
|
||||||
import com.cedarsoftware.util.io.JsonWriter;
|
|
||||||
import com.google.common.eventbus.Subscribe;
|
import com.google.common.eventbus.Subscribe;
|
||||||
|
|
||||||
import ca.odell.glazedlists.EventList;
|
import ca.odell.glazedlists.EventList;
|
||||||
|
@ -622,10 +620,6 @@ public class RenamePanel extends JComponent {
|
||||||
private String getDebugInfo() throws Exception {
|
private String getDebugInfo() throws Exception {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
Map<String, Object> options = new HashMap<String, Object>(2);
|
|
||||||
options.put(JsonWriter.TYPE_NAME_MAP, MetaAttributes.JSON_TYPE_MAP);
|
|
||||||
options.put(JsonWriter.SKIP_NULL_FIELDS, true);
|
|
||||||
|
|
||||||
for (Match<Object, File> m : renameModel.matches()) {
|
for (Match<Object, File> m : renameModel.matches()) {
|
||||||
String f = getStructurePathTail(m.getCandidate()).getPath();
|
String f = getStructurePathTail(m.getCandidate()).getPath();
|
||||||
Object v = m.getValue();
|
Object v = m.getValue();
|
||||||
|
@ -635,7 +629,7 @@ public class RenamePanel extends JComponent {
|
||||||
v = new SimpleFileInfo(getStructurePathTail((File) v).getPath(), ((File) v).length());
|
v = new SimpleFileInfo(getStructurePathTail((File) v).getPath(), ((File) v).length());
|
||||||
}
|
}
|
||||||
|
|
||||||
sb.append(f).append('\t').append(JsonWriter.objectToJson(v, options)).append('\n');
|
sb.append(f).append('\t').append(MetaAttributes.toJson(v)).append('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
|
|
Loading…
Reference in New Issue