public static string FormWhereClause(DataObject objectType, IList <string> identifiers) { try { StringBuilder clauseBuilder = new StringBuilder(); string[] delim = new string[] { objectType.keyDelimeter }; foreach (string id in identifiers) { StringBuilder exprBuilder = new StringBuilder(); string[] idParts = id.Split(delim, StringSplitOptions.None); if (objectType.keyProperties.Count > 1) { idParts = id.Split(delim, StringSplitOptions.None); } else { idParts[0] = id; } for (int i = 0; i < objectType.keyProperties.Count; i++) { string key = objectType.keyProperties[i].keyPropertyName; DataProperty prop = objectType.dataProperties.Find(x => x.propertyName.ToLower() == key.ToLower()); string expr = string.Empty; if (IsNumeric(prop.dataType)) { expr = string.Format("{0} = {1}", key, idParts[i]); } else if (string.IsNullOrEmpty(idParts[i])) { expr = string.Format("({0} = '' OR {0} IS NULL)", key); } else { expr = string.Format("{0} = '{1}'", key, idParts[i]); } if (exprBuilder.Length > 0) { exprBuilder.Append(" AND "); } exprBuilder.Append(expr); } if (clauseBuilder.Length > 0) { clauseBuilder.Append(" OR "); } clauseBuilder.Append("(" + exprBuilder.ToString() + ")"); } if (clauseBuilder.Length > 0) { clauseBuilder.Insert(0, " WHERE "); } return(clauseBuilder.ToString()); } catch (Exception ex) { string error = "Error forming WHERE clause: " + ex; _logger.Error(error); throw new Exception(error); } }
public static IDataObject ToDataObject(DataObject objectType, DataRow row) { GenericDataObject dataObject = null; if (row != null) { try { dataObject = new GenericDataObject() { ObjectType = objectType.objectName }; } catch (Exception ex) { _logger.Error(string.Format("Error instantiating data object: {0}", ex)); throw ex; } if (dataObject != null && objectType.dataProperties != null) { foreach (DataProperty objectProperty in objectType.dataProperties) { try { if (objectProperty.propertyName != null) { if (row.Table.Columns.Contains(objectProperty.propertyName)) { object value = row[objectProperty.propertyName]; if (value.GetType() == typeof(System.DBNull)) { value = null; } if (objectProperty.dataType.ToString().ToUpper() == "DECIMAL" || objectProperty.dataType.ToString().ToUpper() == "DOUBLE") { dataObject.SetPropertyNumericValue(objectProperty.propertyName, value); } else { dataObject.SetPropertyValue(objectProperty.propertyName, value); } } else { _logger.Warn(String.Format("Value for column [{0}] not found in data row of table [{1}]", objectProperty.columnName, objectType.tableName)); } } } catch (Exception ex) { _logger.Error(string.Format("Error getting data row value: {0}", ex)); throw ex; } } } //Extension Properties____Starts if (dataObject != null && objectType.extensionProperties != null) { foreach (ExtensionProperty extentionProperty in objectType.extensionProperties) { try { if (extentionProperty.propertyName != null) { if (row.Table.Columns.Contains(extentionProperty.propertyName)) { object value = row[extentionProperty.propertyName]; if (value.GetType() == typeof(System.DBNull)) { value = null; } dataObject.SetPropertyValue(extentionProperty.propertyName, value); } else { _logger.Warn(String.Format("Value for column [{0}] not found in data row of table [{1}]", extentionProperty.columnName, objectType.tableName)); } } } catch (Exception ex) { _logger.Error(string.Format("Error getting data row value: {0}", ex)); throw ex; } } } //Extension Properties____Ends } else { dataObject = new GenericDataObject() { ObjectType = objectType.objectName }; foreach (DataProperty objectProperty in objectType.dataProperties) { dataObject.SetPropertyValue(objectProperty.propertyName, null); } } if (row[HAS_CONTENT] != DBNull.Value && Convert.ToBoolean(row[HAS_CONTENT])) { dataObject.HasContent = true; } return(dataObject); }
public static string FormWhereClause(DataObject objectType, string identifier) { return(FormWhereClause(objectType, new List <string> { identifier })); }
public static string CreateUpdateSQL(string tableName, DataObject objectType, SerializableDataObject dataObject) { switch (dataObject.State) { case ObjectState.Create: { StringBuilder colsBuilder = new StringBuilder(); StringBuilder valsBuilder = new StringBuilder(); foreach (var prop in dataObject.Dictionary) { DataProperty dataProp = objectType.dataProperties.Find(x => x.propertyName == prop.Key); colsBuilder.Append("," + prop.Key); if (BaseLightweightDataLayer.IsNumeric(dataProp.dataType)) { if (prop.Value != null && prop.Value != "") { valsBuilder.Append("," + prop.Value); } else { valsBuilder.Append("," + "null"); } } else if (dataProp.dataType == DataType.Date || dataProp.dataType == DataType.DateTime) { if (prop.Value != "") { DateTime dateTime = Utility.FromXsdDateTime(prop.Value.ToString()); valsBuilder.Append("," + prop.Key + "='" + dateTime.ToString() + "'"); } else { valsBuilder.Append("," + prop.Key + "= null"); } } else { valsBuilder.Append("," + "'" + prop.Value + "'"); } } if (dataObject.HasContent) { colsBuilder.Append("," + HAS_CONTENT); valsBuilder.Append("," + "'" + dataObject.HasContent + "'"); } string insertSQL = string.Format(INSERT_SQL_TPL, tableName, colsBuilder.Remove(0, 1), valsBuilder.Remove(0, 1)); return(insertSQL); } case ObjectState.Update: { StringBuilder builder = new StringBuilder(); string whereClause = BaseLightweightDataLayer.FormWhereClause(objectType, dataObject.Id); foreach (var prop in dataObject.Dictionary) { DataProperty dataProp = objectType.dataProperties.Find(x => x.propertyName == prop.Key); if (BaseLightweightDataLayer.IsNumeric(dataProp.dataType)) { if (prop.Value != null && prop.Value != "") { builder.Append("," + prop.Key + "=" + prop.Value); } else { builder.Append("," + prop.Key + "=" + "null"); } } else if (dataProp.dataType == DataType.Date || dataProp.dataType == DataType.DateTime) { if (prop.Value != "") { DateTime dateTime = Utility.FromXsdDateTime(prop.Value.ToString()); builder.Append("," + prop.Key + "='" + dateTime.ToString() + "'"); } else { builder.Append("," + prop.Key + "= null"); } } else { builder.Append("," + prop.Key + "='" + prop.Value + "'"); } } if (dataObject.HasContent) { builder.Append("," + HAS_CONTENT + "='" + dataObject.HasContent + "'"); } string updateSQL = string.Format(UPDATE_SQL_TPL, tableName, builder.Remove(0, 1), whereClause); return(updateSQL); } case ObjectState.Delete: { string whereClause = BaseLightweightDataLayer.FormWhereClause(objectType, dataObject.Id); string deleteSQL = string.Format(DELETE_SQL_TPL, tableName, whereClause); return(deleteSQL); } } return(string.Empty); }
public abstract List <IContentObject> GetContents(DataObject objectType, Dictionary <string, string> idFormats);
public abstract Response Update(DataObject objectType, List <SerializableDataObject> dataObjects);
public abstract List <SerializableDataObject> Get(DataObject objectType);