/*    [JsonIgnore]
         *  public FortScriptableObject ScriptableObject { get; set; }*/

        public void Save(IInfo fortObject)
        {
            Tokens = new Dictionary <string, Object>();

            try
            {
                using (MemoryStream stream = new MemoryStream())
                {
                    Serializer.Serializer serializer = new Serializer.Serializer();
                    serializer.Serialize(stream, fortObject, new UnityObjectSerializerToken(this));
                    SerializedData = Convert.ToBase64String(stream.ToArray());
                }
            }
            catch (Exception e)
            {
                Debug.LogException(e);
                SerializedData = null;
            }

/*            SerializedData = JsonConvert.SerializeObject(fortObject,
 *              new JsonSerializerSettings { Converters = { new UnityObjectConverter(this) }, /*Converters = { new ArrayReferencePreservngConverter() },#1# TypeNameHandling = TypeNameHandling.All/*,PreserveReferencesHandling = PreserveReferencesHandling.All#1#});*/

            UnityObjectTokens = Tokens.Select(pair => new UnityObjectToken
            {
                Item  = pair.Value,
                Token = pair.Key
            }).ToArray();
        }
예제 #2
0
        /// <summary>
        /// Returns the jsonified parsed content of the file.
        /// </summary>
        /// <param name="options"></param>
        /// <returns></returns>
        public virtual string ToJson(SerializerOptions options = null)
        {
            options = options ?? new SerializerOptions();

            var _serializer = new Serializer.Serializer(options);

            return(_serializer.Serialize(this));
        }
 public void AddVirtualKeyFactory(Serializer.Serializer context, VirtualKeyFactory vf)
 {
     if (vf.Worker != this)
     {
         throw new Serializer.SerializerException();
     }
     _virtualKeyFactories[context] = vf;
 }
예제 #4
0
        public String ToSqlString(Serializer.Serializer serializer, Type type, String target)
        {
            StringBuilder b = new StringBuilder();

            b.Append("NOT (").Append(_restriction.ToSqlString(serializer, type, target)).Append(") ");

            return(b.ToString());
        }
        public IList <Type> ComputeVirtualKeyPath(Serializer.Serializer context, Type from, Type to)
        {
            List <Type> ret = _virtualKeyFactories[context].ComputeVirtualKeyPath(from, to, new List <Type>());

            ret.Reverse();

            return(ret);
        }
예제 #6
0
        public override String ToSqlString(Serializer.Serializer serializer, Type type, String target)
        {
            AttributeWorker w = AttributeWorker.GetInstance(target);

            IList <Type> path = w.ComputeVirtualKeyPath(serializer, _type, type); //ComputePath(type, _type, target);

            return(ComputeSqlJoin(serializer, path, _sqlString, target).ToString());
        }
예제 #7
0
        public string ToSqlString(Serializer.Serializer serializer, Type type, String target)
        {
            StringBuilder tmp = new StringBuilder();

            tmp.Append("(");
            tmp.Append(_restriction.ToSqlString(serializer, type, target));
            tmp.Append(") ");
            return(tmp.ToString());
        }
예제 #8
0
        protected StringBuilder ComputeSqlJoin(Serializer.Serializer serializer, IList <Type> path, String restriction, String target)
        {
            AttributeWorker w = AttributeWorker.GetInstance(target);

            QueryGenerator ret = new QueryGenerator();

            ret.AddQueryComponent(new PlaceHolderComponent());

            //StringBuilder b = new StringBuilder();
            //b.Append(" @@@");

            for (int i = 0; i < path.Count - 1; i++)
            {
                Type from = path[i];
                Type to   = path[i + 1];
                //if (i > 0)
                //{
                //    b.Replace(" @@@", " WHERE  @@@");
                //}

                IVirtualKey    vKey = w.CreateVirtualKey(serializer, from, to);
                QueryGenerator gen1 = vKey.ToSqlRestriction(target, from, to, serializer);
                ret.ReplacePlaceHolders(gen1);
                //b.Replace(" @@@", vKey.ToSqlRestriction(target, from, to));

                if (i == path.Count - 2)
                {
                    QueryGenerator gen2 = new QueryGenerator();
                    gen2.AddQueryComponent(new SqlStringComponent(" WHERE "));
                    gen2.AddQueryComponent(new SqlStringComponent(restriction));
                    ret.ReplacePlaceHolders(gen2);

                    //b.Replace(" @@@", " WHERE  @@@");
                    //b.Replace(" @@@", restriction);
                }
            }

            if (path.Count == 1)
            {
                QueryGenerator gen3 = new QueryGenerator();
                gen3.AddQueryComponent(new SqlStringComponent(" WHERE "));
                gen3.AddQueryComponent(new SqlStringComponent(restriction));
                ret.ReplacePlaceHolders(gen3);

                //b.Replace(" @@@", " WHERE  @@@");
                //b.Replace(" @@@", restriction);
            }


            //Entferne das führende " WHERE "

            return(ret.ToSqlString());

            //return b.Remove(0,7);
        }
예제 #9
0
        public TcpServer(int port, HandlersRegistry reg, Serializer.Serializer serializer)
        {
            Serializer = serializer;
            Registry   = reg;

            Server = new TcpListener(GetLocalIp(), port);
            Server.Start();
            StartAccepting();

            Console.WriteLine("Server started at " + Server.LocalEndpoint);
        }
예제 #10
0
        static void Main(string[] args)
        {
            Collection <Factory> collection = new Collection <Factory>();

            collection.Add(new Factory("Гвозди", 728, 1000));
            collection.Add(new Factory("Коленвалы", 1307, 30));
            collection.Add(new Factory("Бюсты", 1508, 6000000));
            collection.Add(new Factory("Обувь", 168, 2000));
            collection.Add(new Factory("Лопапты", 6606, 666));
            collection.Add(new Factory("Кирпичи", 1400, -28));

            Serializer.Serializer serializer = new Serializer.Serializer();
            serializer.SerializeByLINQ(collection, "FactoriesLINQ.xml");
            serializer.SerializeXML(collection, "FactoriesXML.xml");
            serializer.SerializeJSON(collection, "FactoriesJson.json");

            Collection <Factory> outCollectionLinq = new Collection <Factory>();

            Console.WriteLine("\nВывод из файла LINQ:");
            foreach (var factory in serializer.DeSerializeByLINQ("FactoriesLINQ.xml"))
            {
                outCollectionLinq.Add(factory);
            }
            foreach (Factory factory in outCollectionLinq)
            {
                factory.Info();
            }

            Collection <Factory> outCollectionXml = new Collection <Factory>();

            Console.WriteLine("\nВывод из файла XML:");
            foreach (var factory in serializer.DeSerializeXML("FactoriesXML.xml"))
            {
                outCollectionXml.Add(factory);
            }
            foreach (Factory factory in outCollectionXml)
            {
                factory.Info();
            }

            Collection <Factory> outCollectionJson = new Collection <Factory>();

            Console.WriteLine("\nВывод из файла JSON:");
            foreach (var factory in serializer.DeSerializeJSON("FactoriesJson.json"))
            {
                outCollectionJson.Add(factory);
            }
            foreach (Factory factory in outCollectionJson)
            {
                factory.Info();
            }
        }
예제 #11
0
        /// <summary>
        /// Exports the jsonified parsed content of the file.
        /// </summary>
        /// <param name="options"></param>
        /// <param name="fileName"></param>
        public virtual void Export(SerializerOptions options = null, string fileName = "")
        {
            options = options ?? new SerializerOptions();

            if (string.IsNullOrWhiteSpace(fileName))
            {
                fileName = Utils.GetExportFileName(FileName, options.Compression);
            }

            var _serializer = new Serializer.Serializer(options);

            _serializer.Export(fileName, this);
        }
예제 #12
0
        public QueryGenerator ToSqlRestriction(String target, Type from, Type to, Serializer.Serializer ser)
        {
            if (from == _sourceType && to == _targetType)
            {
                return(ToSqlRestrictionForward(target, ser));
            }
            else if (from == _targetType && to == _sourceType)
            {
                return(ToSqlRestrictionBackward(target, ser));
            }

            throw new Exception();
        }
예제 #13
0
        public override string ToSqlString(Serializer.Serializer serializer, Type type, string target)
        {
            AttributeWorker w = AttributeWorker.GetInstance(target);
            FieldInfo       f = w.RetrieveField(_type, _field, false);

            if (f == null)
            {
                throw new RestrictionException("Field '" + _field + "' not found in '" + _type.ToString() + "'");
            }

            if (!(_value is String) || f.FieldType != typeof(String))
            {
                throw new RestrictionException("LIKE operator can only applied to Strings");
            }
            return(base.ToSqlString(serializer, type, target));
        }
예제 #14
0
        private QueryGenerator ToSqlRestrictionForward(String target, Serializer.Serializer ser)
        {
            AttributeWorker w = AttributeWorker.GetInstance(target);

            QueryGenerator gen = new QueryGenerator();

            gen.AddQueryComponent(new SqlStringComponent(" WHERE "));

            bool start = true;

            foreach (String key in _virtualDefKeyFields.Keys)
            {
                if (!start)
                {
                    gen.AddQueryComponent(new SqlStringComponent(" AND "));
                }
                else
                {
                    gen.AddQueryComponent(new SqlStringComponent("("));
                }
                start = false;

                String    translatedKey = _keyTranslation[key];
                FieldInfo joinField     = _virtualJoinKeyFields[translatedKey];
                String    joinMapping   = w.GetColumnMapping(joinField);

                FieldInfo defField   = _virtualDefKeyFields[key];
                String    defMapping = w.GetColumnMapping(defField);

                StringBuilder tmp = new StringBuilder();

                tmp.Append(defMapping).Append(" IN (SELECT ").Append(joinMapping).Append(" FROM ");
                tmp.Append(w.GetTableMapping(TargetType, ser.Praefix));
                gen.AddQueryComponent(new SqlStringComponent(tmp));
                gen.AddQueryComponent(new PlaceHolderComponent());
                gen.AddQueryComponent(new SqlStringComponent(")"));
            }

            gen.AddQueryComponent(new SqlStringComponent(")"));
            return(gen);

            //ret.Append(")");
            //return ret.ToString();
        }
예제 #15
0
        public override String ToSqlString(Serializer.Serializer serializer, Type type, String target)
        {
            AttributeWorker w    = AttributeWorker.GetInstance(target);
            IList <Type>    path = w.ComputeVirtualKeyPath(serializer, _type, type); //ComputePath(_type, type, target);

            StringBuilder b = new StringBuilder();
            FieldInfo     f = w.RetrieveField(_type, _field, false);

            if (f == null)
            {
                throw new RestrictionException("Field '" + _field + "' not found in '" + _type.ToString() + "'");
            }
            b.Append(w.GetColumnMapping(f));
            b.Append(_comparer).Append(SqlUtil.SqlConvert(_value));

            String tmp = ComputeSqlJoin(serializer, path, b.ToString(), target).ToString();

            return(tmp);
        }
예제 #16
0
        public virtual string ToSqlString(Serializer.Serializer serializer, Type type, String target)
        {
            StringBuilder b     = new StringBuilder();
            bool          start = true;

            foreach (IRestriction r in _restriction)
            {
                if (!start)
                {
                    b.Append(_connector);
                    b.Append(r.ToSqlString(serializer, type, target).Remove(0, 7));
                }
                else
                {
                    start = false;
                    b.Append(r.ToSqlString(serializer, type, target));
                }
            }
            return(b.ToString());
        }
        public IInfo Load(Type objectType)
        {
            if (UnityObjectTokens == null)
            {
                UnityObjectTokens = new UnityObjectToken[0];
            }
            Tokens = UnityObjectTokens.ToDictionary(token => token.Token, token => token.Item);
            if (string.IsNullOrEmpty(SerializedData) || SerializedData == "null")
            {
                return((IInfo)Activator.CreateInstance(objectType));
            }
            try
            {
                using (MemoryStream stream = new MemoryStream(Convert.FromBase64String(SerializedData)))
                {
                    Serializer.Serializer serializer = new Serializer.Serializer();
                    object deserialize = serializer.Deserialize(stream, new UnityObjectSerializerToken(this));
                    if (deserialize == null)
                    {
                        return(null);
                    }
                    if (!objectType.IsInstanceOfType(deserialize))
                    {
                        throw new Exception("Invalid Item on loading in FortScriptableObject");
                    }
                    return((IInfo)deserialize);
                }

/*                return
 *                      JsonConvert.DeserializeObject(SerializedData,
 *                          new JsonSerializerSettings { Converters = { new UnityObjectConverter(this) }, /*Converters = { new ArrayReferencePreservngConverter() },#1# TypeNameHandling = TypeNameHandling.All/*, PreserveReferencesHandling = PreserveReferencesHandling.All#1# });*/
            }
            catch (Exception e)
            {
                Debug.LogException(e);
                return((IInfo)Activator.CreateInstance(objectType));
            }
        }
예제 #18
0
 public abstract string ToSqlString(Serializer.Serializer serializer, Type type, String target);
예제 #19
0
 public ItemsDataStore(Version currentVersion)
 {
     _currentVersion = currentVersion;
     _serializer     = new Serializer.Serializer();
 }
 public bool IsForeignKey(Serializer.Serializer context, FieldInfo fi)
 {
     return(_virtualKeyFactories[context].IsForeignKey(fi));
 }
 public IVirtualKey CreateVirtualKey(Serializer.Serializer context, Type source, Type target)
 {
     return(_virtualKeyFactories[context].GetVirtualKeyTemplate(source, target).CreateFromTemplate());
 }
예제 #22
0
파일: RPC.cs 프로젝트: ilyacoding/bsuir
 public Rpc(Serializer.Serializer serializer)
 {
     Client     = new TcpClient();
     Serializer = serializer;
 }