Files
2026-05-22 11:14:29 +02:00

165 lines
4.4 KiB
Plaintext

<snippet>
<subclass>afryca.ase.Snippet</subclass>
<file></file>
<category>Library</category>
<name>adapters</name>
<description>Adapters</description>
<code>
var adapters = (typeof exports === "undefined")?(function adapters() {}):(exports);
if(typeof global !== "undefined") { global.adapters = adapters; }
adapters.toMultidimensionalArray = function toMultidimensionalArray(value, type) {
var lengths = [];
var aux = value;
while (Array.isArray(aux)) {
lengths[lengths.length] = aux.length;
aux = aux[0];
}
var depth = lengths.length;
var ResultType = Java.type(type);
if (depth < 2) {
return Java.to(value, type);
} else {
var result = eval('new ResultType(' + lengths[0] + ')');
var simpleType = type.substring(0, type.length() - 2);
for (var i = 0; i < result.length; i++) {
result[i] = adapters.toMultidimensionalArray(value[i], simpleType);
}
return result;
}
}
adapters.toNumber = function toNumber(value) {
try {
var DoubleType = Java.type('java.lang.Double');
var number = DoubleType.valueOf(value);
var NumberType = Java.type('java.lang.Number');
return (NumberType.class.isInstance(number))
? NumberType.class.cast(number)
: null;
} catch (err) {
return null;
}
}
adapters.toDouble = function toDouble(value) {
var number = adapters.toNumber(value);
return (number != null)
? number.doubleValue()
: null;
}
adapters.toInteger = function toInteger(value) {
var number = adapters.toNumber(value);
return (number != null)
? number.intValue()
: null;
}
adapters.fuzzyValue2SaatyValue = function fuzzyValue2SaatyValue(value) {
return Math.pow(9, 2 * value - 1);
}
adapters.fuzzyRelation2SaatyRelation = function fuzzyRelation2SaatyRelation(relation) {
var elements = relation.length;
var result = new Array(elements);
for (var i = 0; i < elements; i++) {
result[i] = new Array(elements);
for (var j = 0; j < elements; j++) {
result[i][j] = adapters.fuzzyValue2SaatyValue(relation[i][j]);
}
}
return result;
}
adapters.saatyValue2FuzzyValue = function saatyValue2FuzzyValue(value) {
return (1 + (Math.log(value) / Math.log(9)))/2;
}
adapters.saatyRelation2FuzzyRelation = function saatyRelation2FuzzyRelation(relation) {
var elements = relation.length;
var result = new Array(elements);
for (var i = 0; i < elements; i++) {
result[i] = new Array(elements);
for (var j = 0; j < elements; j++) {
result[i][j] = adapters.saatyValue2FuzzyValue(relation[i][j]);
}
}
return result;
}
adapters.fpr2jsArray = function fpr2jsArray(preference) {
var result;
var elements = preference.getNumberOfAlternatives();
result = new Array(elements);
for (var i = 0; i < elements; i++) {
result[i] = new Array(elements);
for (var j = 0; j < elements; j++) {
result[i][j] = preference.getValue(i | 0, j | 0);
}
}
return result;
}
adapters.fpr2jsSaatyRelation = function fpr2jsSaatyRelation(preference) {
var jsFuzzyPreferences = adapters.fpr2jsArray(preference);
return adapters.fuzzyRelation2SaatyRelation(jsFuzzyPreferences);
}
adapters.preferencesAsVectorsArray = function preferecesAsVectorsArray(preferences) {
var result = [];
var preference;
var preferencesArray = preferences[0].getPreferences();
for (var p = 0; p < preferences.length; p++) {
preference = [];
for (var i = 0; i < preferencesArray.length; i++) {
for (var j = 0; j < preferencesArray[i].length; j++) {
if(preferences[p] instanceof DecisionMatrix) {
preference[preference.length] = preferences[p].getValue(i | 0, j | 0);
} else {
if (i != j) {
preference[preference.length] = preferences[p].getValue(i | 0, j | 0);
}
}
}
}
result[p] = preference;
}
return result;
}
adapters.matrixAsVectorsArray = function matrixAsVectorsArray(preferences) {
var result = [];
var preference;
for (var p = 0; p < preferences.length; p++) {
preference = [];
for (var i = 0; i < preferences[p].length; i++) {
for (var j = 0; j < preferences[p][i].length; j++) {
preference[preference.length] = preferences[p][i][j];
}
}
result[p] = preference;
}
return result;
}
adapters.arrayListAsVector = function arrayListAsVector(arrayList) {
var result = [];
for (var i = 0; i < arrayList.size(); i++) {
result[i] = arrayList.get(i);
}
return result;
}
adapters.copyNElementsVector = function copyNElementsVector(vector, n) {
var result = [];
for(var i = 0; i < n; i++){
result[i] = vector[i];
}
return result;
}
adapters
</code>
</snippet>