sPFFramework/src/main/java/it/polimi/spf/framework/notification/SPFTriggerTable.java
SPFTrigger saveTrigger(SPFTrigger trigger, String appIdentifier) {
		if (appIdentifier == null || trigger == null) {
			throw new NullPointerException();
		}

		ContentValues cv = new ContentValues();
		cv.put(Contract.COLUMN_NAME, trigger.getName());
		cv.put(Contract.COLUMN_QUERY, trigger.getQuery().toQueryString());
		cv.put(Contract.COLUMN_ACTION, trigger.getAction().toJSON());
		cv.put(Contract.COLUMN_ONESHOT, trigger.isOneShot() ? 1 : 0);
		cv.put(Contract.COLUMN_EXPIRATION, trigger.getSleepPeriod());
		cv.put(Contract.COLUMN_APP_IDENTIFIER, appIdentifier);

		SQLiteDatabase db = getWritableDatabase();

		if (trigger.getId() >= 0) {
			String where = Contract._ID + " = ?";
			String[] whereArgs = { String.valueOf(trigger.getId()) };
			if (db.update(Contract.TABLE_NAME, cv, where, whereArgs) > 0) {
				return trigger;
			}
			return null;
		}

		long id = db.insert(Contract.TABLE_NAME, null, cv);
		if (id >= 0) {
			trigger.setId(id);
			return trigger;
		}

		return null;
	}
SPFTrigger saveTrigger(SPFTrigger trigger, String appIdentifier) {
		if (appIdentifier == null || trigger == null) {
			throw new NullPointerException();
		}

		ContentValues cv = new ContentValues();
		cv.put(Contract.COLUMN_NAME, trigger.getName());
		cv.put(Contract.COLUMN_QUERY, trigger.getQuery().toQueryString());
		cv.put(Contract.COLUMN_ACTION, trigger.getAction().toJSON());
		cv.put(Contract.COLUMN_ONESHOT, trigger.isOneShot() ? 1 : 0);
		cv.put(Contract.COLUMN_EXPIRATION, trigger.getSleepPeriod());
		cv.put(Contract.COLUMN_APP_IDENTIFIER, appIdentifier);

		SQLiteDatabase db = getWritableDatabase();

		if (trigger.getId() >= 0) {
			String where = Contract._ID + " = ?";
			String[] whereArgs = { String.valueOf(trigger.getId()) };
			if (db.update(Contract.TABLE_NAME, cv, where, whereArgs) > 0) {
				return trigger;
			}
			return null;
		}

		long id = db.insert(Contract.TABLE_NAME, null, cv);
		if (id >= 0) {
			trigger.setId(id);
			return trigger;
		}

		return null;
	}
Save the trigger in the database. If the operation succeeds, return a
trigger with an updated id is returned, otherwise return null. The id is
updated only when a new trigger is created. ( e.g. its id is set to -1)

@param trigger
@param appIdentifier
@return a trigger, otherwise null