All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.cassproject.general.repository.EcFile Maven / Gradle / Ivy

There is a newer version: 3.1.8
Show newest version
package org.cassproject.general.repository;

import org.cassproject.ebac.repository.EcEncryptedValue;
import org.cassproject.ebac.repository.EcRepository;
import org.cassproject.schema.general.EcRemoteLinkedData;
import org.stjs.javascript.Array;
import org.stjs.javascript.Global;
import org.stjs.javascript.JSCollections;
import org.stjs.javascript.functions.Callback1;

/**
 * Implementation of a file with methods for communicating with repository services
 *
 * @author [email protected]
 * @module com.eduworks.ec
 * @class EcFile
 * @extends GeneralFile
 * @constructor
 */
public class EcFile extends GeneralFile {

	/**
	 * Factory method for creating a file with certain values
	 *
	 * @param {String} name
	 *                 Name of the file to be created
	 * @param {String} base64Data
	 *                 Base 64 encoded file data
	 * @param {String} mimeType
	 *                 MIME Type of the file
	 * @return {EcFile}
	 * The file created
	 * @memberOf EcFile
	 * @method create
	 * @static
	 */
	public static EcFile create(String name, String base64Data, String mimeType) {
		EcFile f = new EcFile();
		f.data = base64Data;
		f.name = name;
		f.mimeType = mimeType;

		return f;
	}

	/**
	 * Retrieves a file from the server specified by it's ID
	 *
	 * @param {String}            id
	 *                            ID of the file data to be retrieved
	 * @param {Callback1} success
	 *                            Callback triggered if successfully retrieved from the server,
	 *                            returns the retrieved file
	 * @param {Callback1} failure
	 *                            Callback triggered if error occurs while retrieving file from server
	 * @memberOf EcFile
	 * @method get
	 * @static
	 */
	public static void get(String id, final Callback1 success, final Callback1 failure) {
		EcRepository.get(id, new Callback1() {
			@Override
			public void $invoke(EcRemoteLinkedData p1) {
				EcFile f = new EcFile();
				if (p1.isA(EcEncryptedValue.myType)) {
					EcEncryptedValue encrypted = new EcEncryptedValue();
					encrypted.copyFrom(p1);
					p1 = encrypted.decryptIntoObject();

					EcEncryptedValue.encryptOnSave(p1.id, true);
				}
				if (p1 != null && p1.isA(GeneralFile.myType)) {
					f.copyFrom(p1);

					if (success != null)
						success.$invoke(f);
				} else {
					if (failure != null)
						failure.$invoke("Resultant object is not a competency.");
					return;
				}
			}
		}, failure);
	}

	/**
	 * Searches the repository given for files that match the query passed in
	 *
	 * @param {EcRepository}       repo
	 *                             Repository to search for files
	 * @param {String}             query
	 *                             Query to user for search
	 * @param {Callback1 success
	 *                             Callback triggered after search completes,
	 *                             returns results
	 * @param {Callback1}  failure
	 *                             Callback triggered if error occurs while searching
	 * @param {Object}             paramObj
	 *                             Parameters to pass to search
	 * @param start
	 * @param size
	 * @memberOf EcFile
	 * @method search
	 * @static
	 */
	public static void search(EcRepository repo, String query, final Callback1> success, Callback1 failure, Object paramObj) {
		String queryAdd = "";

		queryAdd = new GeneralFile().getSearchStringByType();

		if (query == null || query == "")
			query = queryAdd;
		else
			query = "(" + query + ") AND " + queryAdd;

		repo.searchWithParams(query, paramObj, null, new Callback1>() {
			@Override
			public void $invoke(Array p1) {
				if (success != null) {
					Array ret = JSCollections.$array();
					for (int i = 0; i < p1.$length(); i++) {
						EcFile file = new EcFile();
						if (p1.$get(i).isAny(file.getTypes())) {
							file.copyFrom(p1.$get(i));
						} else if (p1.$get(i).isA(EcEncryptedValue.myType)) {
							EcEncryptedValue val = new EcEncryptedValue();
							val.copyFrom(p1.$get(i));
							if (val.isAnEncrypted(EcFile.myType)) {
								EcRemoteLinkedData obj = val.decryptIntoObject();
								file.copyFrom(obj);
								EcEncryptedValue.encryptOnSave(file.id, true);
							}
						}

						ret.$set(i, file);
					}

					success.$invoke(ret);
				}
			}
		}, failure);
	}

	/**
	 * Saves this file in the repository using the repository web services
	 *
	 * @param {Callback1} success
	 *                            Callback triggered if successfully saved
	 * @param {Callback1} failure
	 *                            Callback triggered if error occurs while saving
	 * @memberOf EcFile
	 * @method save
	 */
	public void save(final Callback1 success, Callback1 failure) {
		if (this.name == null || this.name == "") {
			String msg = "File Name can not be empty";
			if (failure != null)
				failure.$invoke(msg);
			else
				Global.console.error(msg);
			return;
		}

		EcRepository.save(this, success, failure);
	}

	/**
	 * Deletes the file from the repository using repository web services
	 *
	 * @param {Callback1} success
	 *                            Callback triggered if successfully deleted
	 * @param {Callback1} failure
	 *                            Callback triggered if error occurs while deleting
	 * @memberOf EcFile
	 * @method _delete
	 */
	public void _delete(EcRepository repo, final Callback1 success, final Callback1 failure) {
		repo.DELETE(this, success, failure);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy