public DBCommand clone()

in empire-db/src/main/java/org/apache/empire/db/DBCommand.java [154:193]


    public DBCommand clone()
    {
        DBCommand clone = (DBCommand)super.clone();
        // Clone lists
        if (select!=null)
            clone.select = new ArrayList<DBColumnExpr>(select);
        if (set!=null)
            clone.set = new ArrayList<DBSetExpr>(set);
        if (joins!=null)
            clone.joins = new ArrayList<DBJoinExpr>(joins);
        if (where!=null)
            clone.where = new ArrayList<DBCompareExpr>(where);
        if (groupBy!=null)
            clone.groupBy = new ArrayList<DBColumnExpr>(groupBy);
        if (having!=null)
            clone.having = new ArrayList<DBCompareExpr>(having);
        // clone params
        clone.cmdParams = new DBCmdParamList(cmdParams.size());
        if (!cmdParams.isEmpty())
        {   // clone set
            for (int i=0; (clone.set!=null && i<clone.set.size()); i++)
                clone.set.set(i, clone.set.get(i).copy(clone));
            // clone joins
            for (int i=0; (clone.joins!=null && i<clone.joins.size()); i++)
                clone.joins.set(i, clone.joins.get(i).copy(clone));
            // clone where and having
            for (int i=0; (clone.where!=null && i<clone.where.size()); i++)
                clone.where.set(i, clone.where.get(i).copy(clone));
            for (int i=0; (clone.having!=null && i<clone.having.size()); i++)
                clone.having.set(i, clone.having.get(i).copy(clone));
        }
        // check params
        if (clone.cmdParams.size()!=this.cmdParams.size())
        {   // Failed to copy all DBCmdParams
            log.error("DBCommand.clone failed: Not all DBCmdParams could be replaced.");
            throw new NotSupportedException(this, "clone");
        }
        // done
        return clone;
    }