package org.archive.format.arc; import java.util.logging.Logger; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class FiledescRecord { private static final Logger LOG = Logger.getLogger(FiledescRecord.class.getName()); private int majorVersion; private int minorVersion; private String organization; private String format; private JSONObject metadata; public boolean hasMetaData() { return metadata != null; } public int getMetaDataCount() { try { return metadata == null ? 0 : metadata.getJSONArray("MetaData").length(); } catch (JSONException e) { LOG.warning(e.getMessage()); } return 0; } public void addMetaData(String name, String value) { if(metadata == null) { metadata = new JSONObject(); } try { JSONObject jo = new JSONObject(); jo.put("name", name); jo.put("value", value); metadata.append("MetaData",jo); } catch(JSONException e) { LOG.warning(e.getMessage()); } } public String getMetaDataName(int i) { return getMetaDataField(i,"name"); } public String getMetaDataValue(int i) { return getMetaDataField(i,"value"); } public String getMetaDataField(int i, String field) { try { if(metadata != null) { JSONArray a = metadata.getJSONArray("MetaData"); if(i < a.length()) { JSONObject jo = a.getJSONObject(i); if(jo != null) { return jo.getString(field); } } } } catch (JSONException e) { LOG.warning(e.getMessage()); } return null; } public int getMajorVersion() { return majorVersion; } public void setMajorVersion(int majorVersion) { this.majorVersion = majorVersion; } public int getMinorVersion() { return minorVersion; } public void setMinorVersion(int minorVersion) { this.minorVersion = minorVersion; } public String getOrganization() { return organization; } public void setOrganization(String organization) { this.organization = organization; } public String getFormat() { return format; } public void setFormat(String format) { this.format = format; } }