public static string Save(string[] param)
 {
     if (param.Length != 3)
     {
         ServerLog.Register("Esperando 2 parameteros en: save.");
         return("ERROR");
     }
     try {
         Image <Gray, byte> Img = new Image <Gray, byte>(100, 100);
         Img.Bytes = Convert.FromBase64String(param[2]);
         FaceList.Save(param[1], Img);
         return("OK");
     } catch (Exception e) {
         ServerLog.Register(e.Message);
         return("ERROR");
     }
 }
Beispiel #2
0
        internal string ReadString(string name, string[] values)
        {
            int     ix;
            DBField field = FetchField(name, out ix);

            if (field == null)
            {
                ServerLog.Register("El campo \"" + name + "\" no existe en la tabla \"" + Name + "\".");
                return(String.Empty);
            }
            if (field.Type != DB.FieldTypeString)
            {
                ServerLog.Register("El campo \"" + name + "\" en la tabla \"" + Name + "\" no es texto.");
                return(String.Empty);
            }
            return(values[ix]);
        }
        public static string Test(string[] param)
        {
            if (param.Length != 4)
            {
                ServerLog.Register("Esperando 3 parameteros en: test.");
                return("ERROR");
            }

            try {
                Image <Gray, byte> Img = new Image <Gray, byte>(100, 100);
                Img.Bytes = Convert.FromBase64String(param[3]);
                return(FaceList.Test(param[1] == "T", param[2], Img));
            } catch (Exception e) {
                ServerLog.Register(e.Message);
                return("ERROR");
            }
        }
Beispiel #4
0
        internal bool ReplaceString(string name, string[] values, string val)
        {
            int     ix;
            DBField field = FetchField(name, out ix);

            if (field == null)
            {
                ServerLog.Register("El campo \"" + name + "\" no existe en la tabla \"" + Name + "\".");
                return(false);
            }
            if (field.Type != DB.FieldTypeString)
            {
                ServerLog.Register("El campo \"" + name + "\" en la tabla \"" + Name + "\" no es texto.");
                return(false);
            }
            values[ix] = val.PadRight(field.Size).Substring(0, field.Size);
            return(true);
        }
        internal static DBStatus Open(string name)
        {
            if (Tables.ContainsKey(name))
            {
                DBFile tab = Tables[name];
                return(tab.Open());
            }
            if (!DBFile.Exists(name))
            {
                ServerLog.Register("No se pudo abrir la table \"" + name + "\", debido a que no existe.");
                return(null);
            }
            DBFile   table  = new DBFile(name);
            DBStatus status = table.Open();

            Tables.Add(name, table);
            return(status);
        }
Beispiel #6
0
        internal DBStatus Open()
        {
            if (OpenCount > 0)
            {
                OpenCount++;
                DBStatus stat = new DBStatus();
                stat.Values = new string[FieldCount];
                stat.BlankRow();
                return(stat);
            }

            try {
                DBStream = new FileStream(DataFileName(Name + DBFEXENSION), FileMode.Open);
            }catch (Exception e) {
                LogError(e);
                return(null);
            }

            Formatter = new BinaryFormatter();
            Header    = (DBHeader)Formatter.Deserialize(DBStream);
            if (!Header.IsValid())
            {
                DBStream.Close();
                ServerLog.Register("No se puedo abrir \"" + Name + "\" debido a que el encabezado es inválido.");
                return(null);
            }
            FieldCount = Header.Fields;
            Fields     = new DBField[FieldCount];
            for (int i = 0; i < FieldCount; i++)
            {
                DBField field = (DBField)Formatter.Deserialize(DBStream);
                field.Name = Encoding.ASCII.GetString(field.BName).Trim();
                Fields[i]  = field;
            }

            DBStatus status = new DBStatus();

            status.Table  = this;
            status.Values = new string[FieldCount];
            status.BlankRow();
            return(status);
        }
Beispiel #7
0
        internal double ReadNumeric(string name, string[] values)
        {
            int     ix;
            DBField field = FetchField(name, out ix);

            if (field == null)
            {
                ServerLog.Register("El campo \"" + name + "\" no existe en la tabla \"" + Name + "\".");
                return(0);
            }
            if (field.Type != DB.FieldTypeString)
            {
                ServerLog.Register("El campo \"" + name + "\" en la tabla \"" + Name + "\" no es texto.");
                return(0);
            }
            try {
                return(Convert.ToDouble(values[ix]));
            } catch (Exception) {
                ServerLog.Register("El campo \"" + name + "\" de la tabla \"" + Name + "\" no se puede convertir a \"double\".");
                return(0);
            }
        }
Beispiel #8
0
        internal string[] SaveStruct()
        {
            int          rsize   = 0;
            int          fieldCt = Fields.Length;
            MemoryStream stream  = new MemoryStream();

            Formatter  = new BinaryFormatter();
            Header     = new DBHeader();
            FieldCount = 0;
            Formatter.Serialize(stream, Header);
            int ix;

            for (int i = 0; i < fieldCt; i++)
            {
                DBField field = Fields[i];
                switch (field.Type)
                {
                case DB.FieldTypeString:
                    break;

                case DB.FieldTypeNumeric:
                    break;

                default:
                    ServerLog.Register("Se intentó crear \"" + Name + "\" con al menos un tipo de dato inválido.");
                    return(null);
                }
                if (FetchField(field.Name, out ix) != null)
                {
                    ServerLog.Register("Se intentó crear \"" + Name + "\" con al menos un campo duplicado.");
                    return(null);
                }
                FieldCount++;
                field.Offset = rsize;
                rsize       += field.Size;
                Formatter.Serialize(stream, field);
            }
            if (rsize == 0)
            {
                ServerLog.Register("Se intentó crear \"" + Name + "\" pero la longitud del registro es cero.");
                return(null);
            }

            Header.Fields     = fieldCt;
            Header.RowSize    = rsize;
            Header.HeaderSize = stream.Position;
            Header.VirtualEOF = stream.Position;
            stream.Position   = 0;
            Formatter.Serialize(stream, Header);

            try {
                DBStream = new FileStream(DataFileName(Name + DBFEXENSION), FileMode.CreateNew);
                byte[] bytes = stream.ToArray();
                DBStream.Write(bytes, 0, bytes.Length);
                stream.Close();
                DBStream.Flush();
                OpenCount++;
            } catch (Exception e) {
                LogError(e);
                return(null);
            }
            string[] values = new string[FieldCount];
            BlankRow(values);
            return(values);
        }
Beispiel #9
0
 void LogError(Exception e)
 {
     ServerLog.Register(String.Format("Tabla \"{0}\": {1}", Name, e.Message), true);
 }