You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
3.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.micode.notes.gtask.data;
import android.database.Cursor;
import android.util.Log;
import net.micode.notes.tool.GTaskStringUtils;
import org.json.JSONException;
import org.json.JSONObject;
//元数据Metadata又称中介数据、中继数据为描述数据的数据;主要是描述数据属性property的信息用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录为了达到编制目录的目的必须在描述并收藏数据的内容或特色进而达成协助数据检索的目的。
public class MetaData extends Task {//本类继承于Task,主要用于记录数据的变化。
private final static String TAG = MetaData.class.getSimpleName();//通过调用getSimpleName ()函数实现
//得到类的简写名称存入字符串TAG中
private String mRelatedGid = null;
//设置数据即生成元数据库通过调用JSONObject库函数put ()Task类中的setNotes ()和setName ()函数实现
public void setMeta(String gid, JSONObject metaInfo) {
try {
metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid);//将这对键值放入metaInfo这个jsonobject对象中
} catch (JSONException e) {
Log.e(TAG, "failed to put related gid");//输出错误信息
}
setNotes(metaInfo.toString());
setName(GTaskStringUtils.META_NOTE_NAME);
}
public String getRelatedGid() {
return mRelatedGid;
}//获取相关联的Gid
@Override
public boolean isWorthSaving() {
return getNotes() != null;
}//判断当前数据是否为空,若为空则返回真即值得保存
@Override
public void setContentByRemoteJSON(JSONObject js) {//使用远程json数据对象设置元数据内容
super.setContentByRemoteJSON(js);
if (getNotes() != null) {
try {
JSONObject metaInfo = new JSONObject(getNotes().trim());
mRelatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID);
} catch (JSONException e) {
Log.w(TAG, "failed to get related gid");//输出警告信息
mRelatedGid = null;
}
}
}
@Override//使用本地json数据对象设置元数据内容一般不会用到若用到则抛出异常
public void setContentByLocalJSON(JSONObject js) {
// this function should not be called
throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called");//传递非法参数异常
}
@Override//从元数据内容中获取本地json对象一般不会用到若用到则抛出异常
public JSONObject getLocalJSONFromContent() {
throw new IllegalAccessError("MetaData:getLocalJSONFromContent should not be called");//传递非法参数异常
}
@Override//获取同步动作状态,一般不会用到,若用到,则抛出异常
public int getSyncAction(Cursor c) {
throw new IllegalAccessError("MetaData:getSyncAction should not be called");//传递非法参数异常
}
}