<commit_before>(function (undefined) {
    "use strict";

    /**
     * Esta es la clase RemoteDAO verdadera que genera el RemoteDAOFactory
     * @param {String} entityName Nombre de la entidad 
     * @param {String} ix3Configuration Configuracion de ix3 para obtener la URL base de API REST
     * @param {Http} $http Servicio de Http de AngularJS
     * @param {Q} $q Servicio de promesas de AngularJS
     */
    RemoteDAO.$inject = ['entityName', 'ix3Configuration', '$http', '$q'];
    function RemoteDAO(entityName, ix3Configuration, $http, $q) {
        this.entityName = entityName;
        this.baseUrl = ix3Configuration.server.api;
        this.$http = $http;
        this.$q = $q;


        this.create = function (expand, parent) {
            var deferred = this.$q.defer();

            var params = {};
            if (parent) {
                angular.extend(params, parent);
            }
            if (expand) {
                params.$expand = expand;
            }

            var config = {
                method: 'GET',
                url: this.baseUrl + '/' + this.entityName + "/$create",
                params: params
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un null
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else {
                    throw new Error("Fallo al crear la entidad los datos:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };
        this.get = function (id, expand) {
            var deferred = this.$q.defer();

            var params = {};
            if (expand) {
                params.$expand = expand;
            }

            var config = {
                method: 'GET',
                url: this.baseUrl + '/' + this.entityName + "/" + id,
                params: params
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un null
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else {
                    throw new Error("Fallo al obtener la entidad:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };
        this.insert = function (entity, expand) {
            var deferred = this.$q.defer();

            var params = {};
            if (expand) {
                params.$expand = expand;
            }

            var config = {
                method: 'POST',
                url: this.baseUrl + '/' + this.entityName + "/",
                params: params,
                data: entity
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un null
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else {
                    throw new Error("Fallo al insertar la entidad:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };
        this.update = function (id, entity, expand) {
            var deferred = this.$q.defer();

            var params = {};
            if (expand) {
                params.$expand = expand;
            }

            var config = {
                method: 'PUT',
                url: this.baseUrl + '/' + this.entityName + "/" + id,
                params: params,
                data: entity
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un null
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else {
                    throw new Error("Fallo al insertar la entidad:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };
        this.delete = function (id) {
            var deferred = this.$q.defer();

            var params = {};

            var config = {
                method: 'DELETE',
                url: this.baseUrl + '/' + this.entityName + "/" + id,
                params: params
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un null
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else {
                    throw new Error("Fallo al borrar la entidad:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };
        this.search = function (filters, order, expand, pageNumber, pageSize) {
            var deferred = this.$q.defer();

            var params = {};
            if (filters) {

                for (var key in filters) {
                    if (!filters.hasOwnProperty(key)) {
                        continue;
                    }


                    if (key.charAt(0) === "$") {
                        var operator=key.substr(1).toUpperCase();
                        var filtersWithOperator=filters[key];  //Objeto con filtros cuya operador es "operator"
                        
                        for (var propertyName in filtersWithOperator) {
                            if (!filtersWithOperator.hasOwnProperty(propertyName)) {
                                continue;
                            }

                            params[propertyName + "__" + operator + "__" ] = filtersWithOperator[propertyName];
                        }
                    } else {
                        //Los filtros que cuelgan directamente son del tipo "EQ" y no hace falta poner nada.
                        params[key] = filters[key];
                    }

                }

            }
            if (order) {
                params.$orderby = "";
                for (var i = 0; i < order.length; i++) {
                    var simpleOrder = order[i];
                    if (params.$orderby !== "") {
                        params.$orderby = params.$orderby + ",";
                    }
                    params.$orderby = params.$orderby + simpleOrder.fieldName + " " + simpleOrder.orderDirection;
                }
            }

            if (expand) {
                params.$expand = expand;
            }
            if ((pageNumber >= 0) && (pageSize > 0)) {
                params.$pagenumber = pageNumber;
                params.$pagesize = pageSize;
            }

            var config = {
                method: 'GET',
                url: this.baseUrl + '/' + this.entityName,
                params: params
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un null
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else {
                    throw new Error("Fallo al buscar los datos:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };

        this.getChild = function (id, child, expand) {
            var deferred = this.$q.defer();

            var params = {};
            if (expand) {
                params.$expand = expand;
            }

            var config = {
                method: 'GET',
                url: this.baseUrl + '/' + this.entityName + "/" + id + "/" + child,
                params: params
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un array vacio
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else {
                    throw new Error("Fallo al obtener la entidad hija:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };

        this.metadata = function (expand) {
            var deferred = this.$q.defer();

            var params = {};
            if (expand) {
                params.$expand = expand;
            }

            var config = {
                method: 'GET',
                url: this.baseUrl + '/' + this.entityName + "/$metadata",
                params: params
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un null
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else {
                    throw new Error("Fallo al obtener los metadatos:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };
<commit_msg>Que no de error si el statu de una llamada http es 0 ya que suele ser cuando estamos cambiando de página.<commit_after>(function (undefined) {
    "use strict";

    /**
     * Esta es la clase RemoteDAO verdadera que genera el RemoteDAOFactory
     * @param {String} entityName Nombre de la entidad 
     * @param {String} ix3Configuration Configuracion de ix3 para obtener la URL base de API REST
     * @param {Http} $http Servicio de Http de AngularJS
     * @param {Q} $q Servicio de promesas de AngularJS
     */
    RemoteDAO.$inject = ['entityName', 'ix3Configuration', '$http', '$q'];
    function RemoteDAO(entityName, ix3Configuration, $http, $q) {
        this.entityName = entityName;
        this.baseUrl = ix3Configuration.server.api;
        this.$http = $http;
        this.$q = $q;


        this.create = function (expand, parent) {
            var deferred = this.$q.defer();

            var params = {};
            if (parent) {
                angular.extend(params, parent);
            }
            if (expand) {
                params.$expand = expand;
            }

            var config = {
                method: 'GET',
                url: this.baseUrl + '/' + this.entityName + "/$create",
                params: params
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un null
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else if (status === 0) {
                    //No hacemos nada. Suele ser cuando el navegador ha cancelado la petición y estamos cambiando de página
                } else {
                    throw new Error("Fallo al crear la entidad los datos:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };
        this.get = function (id, expand) {
            var deferred = this.$q.defer();

            var params = {};
            if (expand) {
                params.$expand = expand;
            }

            var config = {
                method: 'GET',
                url: this.baseUrl + '/' + this.entityName + "/" + id,
                params: params
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un null
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else if (status === 0) {
                    //No hacemos nada. Suele ser cuando el navegador ha cancelado la petición y estamos cambiando de página                    
                } else {
                    throw new Error("Fallo al obtener la entidad:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };
        this.insert = function (entity, expand) {
            var deferred = this.$q.defer();

            var params = {};
            if (expand) {
                params.$expand = expand;
            }

            var config = {
                method: 'POST',
                url: this.baseUrl + '/' + this.entityName + "/",
                params: params,
                data: entity
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un null
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else if (status === 0) {
                    //No hacemos nada. Suele ser cuando el navegador ha cancelado la petición y estamos cambiando de página                     
                } else {
                    throw new Error("Fallo al insertar la entidad:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };
        this.update = function (id, entity, expand) {
            var deferred = this.$q.defer();

            var params = {};
            if (expand) {
                params.$expand = expand;
            }

            var config = {
                method: 'PUT',
                url: this.baseUrl + '/' + this.entityName + "/" + id,
                params: params,
                data: entity
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un null
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else if (status === 0) {
                    //No hacemos nada. Suele ser cuando el navegador ha cancelado la petición y estamos cambiando de página                     
                } else {
                    throw new Error("Fallo al insertar la entidad:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };
        this.delete = function (id) {
            var deferred = this.$q.defer();

            var params = {};

            var config = {
                method: 'DELETE',
                url: this.baseUrl + '/' + this.entityName + "/" + id,
                params: params
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un null
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else if (status === 0) {
                    //No hacemos nada. Suele ser cuando el navegador ha cancelado la petición y estamos cambiando de página                     
                } else {
                    throw new Error("Fallo al borrar la entidad:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };
        this.search = function (filters, order, expand, pageNumber, pageSize) {
            var deferred = this.$q.defer();

            var params = {};
            if (filters) {

                for (var key in filters) {
                    if (!filters.hasOwnProperty(key)) {
                        continue;
                    }


                    if (key.charAt(0) === "$") {
                        var operator=key.substr(1).toUpperCase();
                        var filtersWithOperator=filters[key];  //Objeto con filtros cuya operador es "operator"
                        
                        for (var propertyName in filtersWithOperator) {
                            if (!filtersWithOperator.hasOwnProperty(propertyName)) {
                                continue;
                            }

                            params[propertyName + "__" + operator + "__" ] = filtersWithOperator[propertyName];
                        }
                    } else {
                        //Los filtros que cuelgan directamente son del tipo "EQ" y no hace falta poner nada.
                        params[key] = filters[key];
                    }

                }

            }
            if (order) {
                params.$orderby = "";
                for (var i = 0; i < order.length; i++) {
                    var simpleOrder = order[i];
                    if (params.$orderby !== "") {
                        params.$orderby = params.$orderby + ",";
                    }
                    params.$orderby = params.$orderby + simpleOrder.fieldName + " " + simpleOrder.orderDirection;
                }
            }

            if (expand) {
                params.$expand = expand;
            }
            if ((pageNumber >= 0) && (pageSize > 0)) {
                params.$pagenumber = pageNumber;
                params.$pagesize = pageSize;
            }

            var config = {
                method: 'GET',
                url: this.baseUrl + '/' + this.entityName,
                params: params
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un null
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else if (status === 0) {
                    //No hacemos nada. Suele ser cuando el navegador ha cancelado la petición y estamos cambiando de página                     
                } else {
                    throw new Error("Fallo al buscar los datos:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };

        this.getChild = function (id, child, expand) {
            var deferred = this.$q.defer();

            var params = {};
            if (expand) {
                params.$expand = expand;
            }

            var config = {
                method: 'GET',
                url: this.baseUrl + '/' + this.entityName + "/" + id + "/" + child,
                params: params
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un array vacio
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else if (status === 0) {
                    //No hacemos nada. Suele ser cuando el navegador ha cancelado la petición y estamos cambiando de página                     
                } else {
                    throw new Error("Fallo al obtener la entidad hija:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };

        this.metadata = function (expand) {
            var deferred = this.$q.defer();

            var params = {};
            if (expand) {
                params.$expand = expand;
            }

            var config = {
                method: 'GET',
                url: this.baseUrl + '/' + this.entityName + "/$metadata",
                params: params
            };

            this.$http(config).success(function (data, status, headers, config) {
                if (status === 204) {
                    //El 204 (no content) realmente es un null
                    deferred.resolve(null);
                } else {
                    deferred.resolve(data);
                }
            }).error(function (data, status, headers, config) {
                if (status === 400) {
                    deferred.reject(data);
                } else if (status === 0) {
                    //No hacemos nada. Suele ser cuando el navegador ha cancelado la petición y estamos cambiando de página                     
                } else {
                    throw new Error("Fallo al obtener los metadatos:" + status + "\n" + data);
                }
            });

            return deferred.promise;
        };

{'fraction_non_alphanumeric': 0.10999482580200069, 'fraction_numerical': 0.0074594687823387375, 'mean_word_length': 1.0941760722347629, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '918512', 'n_tokens_mistral': 6073, 'n_tokens_neox': 5464, 'n_words': 1535}