Пример #1
0
        internal XsdtAttribute GetXsdtAttrFor(XsdtPrimitiveDataType dt)
        {
            FieldInfo fi    = dt.GetType().GetField(dt.ToString());
            var       attrs = (XsdtAttribute[])fi.GetCustomAttributes(typeof(XsdtAttribute), false);

            return(attrs[0]); //  I know by design that there will be one and only one attribute in this array.
        }
Пример #2
0
        public void Equal(Expression e)
        {
            Expression lh;
            Expression rh;

            if (e is BinaryExpression)
            {
                BinaryExpression be = e as BinaryExpression;
                lh = be.Left;
                rh = be.Right;
            }
            else if (e is MethodCallExpression)
            {
                MethodCallExpression mce = e as MethodCallExpression;
                lh = mce.Arguments[0];
                rh = mce.Arguments[1];
            }
            else
            {
                throw new LinqToRdfException("Unrecognised equality expression type");
            }

            if (lh != null && rh != null)
            {
                XsdtPrimitiveDataType dt = TypeTranslator.GetDataType(lh.Type);
                if (dt == XsdtPrimitiveDataType.XsdtString)
                {
                    QueryAppend("regex(");
                    Dispatch(lh);
                    QueryAppend(", ");
                    Dispatch(rh);
                    QueryAppend(") ");
                }
                else
                {
                    //QueryAppend("(");
                    Dispatch(lh);
                    QueryAppend(" = ");
                    //QueryAppend(")=(");
                    Dispatch(rh);
                    //QueryAppend(")");
                    //Log("+ :{0} Handled", e.NodeType);
                }
            }
            else
            {
                Log("Failure during generation of Equal expression");
            }
        }
Пример #3
0
 internal string GetStringRepresentationFor <T>(T obj, XsdtPrimitiveDataType dt, XsdtAttribute attr)
 {
     return(obj.ToString());
 }
Пример #4
0
 public string GetXsdtDateRepresentationFor(DateTime d, XsdtPrimitiveDataType dt, XsdtAttribute attr)
 {
     // TODO: the time zone offset needs to be returned from somewhere...
     return(d.ToString("yyyy-MM-ddTHH:mm:sszzz"));
 }
Пример #5
0
        public object Get(Type t, object obj)
        {
            //PORT: Convert this just to use SparqlFormatter instead?

            string result              = "";
            XsdtPrimitiveDataType dt   = GetDataType(t);
            XsdtAttribute         attr = GetXsdtAttrFor(dt);

            //if (dt == XsdtPrimitiveDataType.XsdtUnknown)
            //{
            //    return this._formatter.Format(this._g.CreateLiteralNode(obj.ToString()));
            //}
            //else
            //{
            //    XsdtAttribute attr = GetXsdtAttrFor(dt);

            //}

            if (dt == XsdtPrimitiveDataType.XsdtUnknown)
            {
                if (t == typeof(char))
                {
                    return("\"" + obj + "\"");
                }
                else if (attr.IsQuoted)
                {
                    return("\"" + obj + "\"");
                }
                else
                {
                    return(obj.ToString());
                }
            }
            switch (t.FullName)
            {
            case "System.DateTime":
                result = GetXsdtDateRepresentationFor((DateTime)obj, dt, attr);
                break;

            case "System.Byte[]":
                result = Encoding.ASCII.GetString((Byte[])obj);
                break;

            default:
                result = GetStringRepresentationFor(obj, dt, attr);
                break;
            }

            if (attr.IsQuoted)
            {
                result = "\"" + result + "\"";
            }
            string xsdTypeSuffix;

            if (dt != XsdtPrimitiveDataType.XsdtInt && dt != XsdtPrimitiveDataType.XsdtString)
            {
                xsdTypeSuffix = "^^xsd:" + attr.TypeUri;
            }
            else
            {
                xsdTypeSuffix = "";
            }
            return(result + xsdTypeSuffix);
        }