// // Jala Project [http://opensvn.csie.org/traccgi/jala] // // Copyright 2004 ORF Online und Teletext GmbH // // 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. // // $Revision$ // $LastChangedBy$ // $LastChangedDate$ // $HeadURL$ // /** * @fileoverview Additional fields and methods of the HopObject class. */ /** * HelmaLib dependencies */ app.addRepository("modules/core/String.js"); app.addRepository("modules/helma/File.js"); /** * Constructs a name from an object which * is unique in the underlying HopObject collection. * @param {Object} obj The object representing or containing * the alias name. Possible object types include: * * @param {Number} maxLength The maximum length of the alias * @returns The resulting alias * @type String */ HopObject.prototype.getAccessName = function(obj, maxLength) { /** * Private method checking if the key passed as argument is already * existing in this object * @param {String} key The key string to test * @returns True in case the key is already in use, false otherwise * @type Boolean */ var isReserved = function(obj, key) { return key === "." || key === ".." || obj[key] != null || obj[key + "_action"] != null || obj.get(key) != null }; // prepare name depending on argument var name; var clazz = obj.constructor || obj.getClass(); switch (clazz) { case File: case helma.File: case java.io.File: case Packages.helma.util.MimePart: // first fix bloody ie/win file paths containing backslashes name = obj.getName().split(/[\\\/]/).pop(); if (name.contains(".")) name = name.substring(0, name.lastIndexOf(".")); break; case String: case java.lang.String: name = obj; break; default: name = obj.toString(); } // remove all (back)slashes var accessName = name.replace(/[\\\/]/g, ""); // remove all plus signs accessName = accessName.replace("+",""); if (accessName.length > maxLength) { accessName = accessName.substring(0, maxLength); } var result = accessName; if (isReserved(this, result)) { var len = result.length; var counter = 1; var overflow; while (isReserved(this, result)) { result = accessName + "-" + counter.toString(); if ((overflow = result.length - maxLength) > 0) { result = accessName.substring(0, accessName.length - overflow) + "-" + counter.toString(); if (result.length > maxLength) { throw "Unable to create accessname due to limit restriction"; } } counter += 1; } } return result; }; /** * Returns true if the internal state of this HopObject is TRANSIENT. * @returns True if this HopObject is marked as transient, false otherwise. * @type Boolean */ HopObject.prototype.isTransient = function() { return this.__node__.getState() === Packages.helma.objectmodel.INodeState.TRANSIENT; }; /** * Returns true if the internal state of this HopObject is VIRTUAL. * @returns True if this HopObject is marked as virtual, false otherwise. * @type Boolean */ HopObject.prototype.isVirtual = function() { return this.__node__.getState() === Packages.helma.objectmodel.INodeState.VIRTUAL; }; /** * Returns true if the internal state of this HopObject is INVALID. * @returns True if this HopObject is marked as invalid, false otherwise. * @type Boolean */ HopObject.prototype.isInvalid = function() { return this.__node__.getState() === Packages.helma.objectmodel.INodeState.INVALID; }; /** * Returns true if the internal state of this HopObject is CLEAN. * @returns True if this HopObject is marked as clean, false otherwise. * @type Boolean */ HopObject.prototype.isClean = function() { return this.__node__.getState() === Packages.helma.objectmodel.INodeState.CLEAN; }; /** * Returns true if the internal state of this HopObject is NEW. * @returns True if this HopObject is marked as new, false otherwise. * @type Boolean */ HopObject.prototype.isNew = function() { return this.__node__.getState() === Packages.helma.objectmodel.INodeState.NEW; }; /** * Returns true if the internal state of this HopObject is MODIFIED. * @returns True if this HopObject is marked as modified, false otherwise. * @type Boolean */ HopObject.prototype.isModified = function() { return this.__node__.getState() === Packages.helma.objectmodel.INodeState.MODIFIED; }; /** * Returns true if the internal state of this HopObject is DELETED. * @returns True if this HopObject is marked as deleted, false otherwise. * @type Boolean */ HopObject.prototype.isDeleted = function() { return this.__node__.getState() === Packages.helma.objectmodel.INodeState.DELETED; };