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"); } }
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"); } }
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); }
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); }
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); } }
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); }
void LogError(Exception e) { ServerLog.Register(String.Format("Tabla \"{0}\": {1}", Name, e.Message), true); }