|
52 | 52 | import com.marklogic.client.io.InputStreamHandle; |
53 | 53 | import com.marklogic.client.io.StringHandle; |
54 | 54 | import com.marklogic.client.io.XMLStreamReaderHandle; |
55 | | -import com.marklogic.client.io.marker.AbstractReadHandle; |
56 | | -import com.marklogic.client.io.marker.AbstractWriteHandle; |
57 | | -import com.marklogic.client.io.marker.ContentHandle; |
58 | | -import com.marklogic.client.io.marker.JSONWriteHandle; |
59 | | -import com.marklogic.client.io.marker.StructureReadHandle; |
60 | | -import com.marklogic.client.row.RawPlanDefinition; |
61 | | -import com.marklogic.client.row.RowManager; |
62 | | -import com.marklogic.client.row.RowRecord; |
63 | | -import com.marklogic.client.row.RowSet; |
| 55 | +import com.marklogic.client.io.marker.*; |
| 56 | +import com.marklogic.client.row.*; |
64 | 57 | import com.marklogic.client.type.PlanExprCol; |
65 | 58 | import com.marklogic.client.type.PlanParamBindingVal; |
66 | 59 | import com.marklogic.client.type.PlanParamExpr; |
@@ -125,6 +118,19 @@ public RawPlanDefinition newRawPlanDefinition(JSONWriteHandle handle) { |
125 | 118 | return new RawPlanDefinitionImpl(handle); |
126 | 119 | } |
127 | 120 |
|
| 121 | + @Override |
| 122 | + public RawQueryDSLPlan newQueryDSLPlan(TextWriteHandle handle) { |
| 123 | + return new RawQueryDSLPlanImpl(handle); |
| 124 | + } |
| 125 | + @Override |
| 126 | + public RawSQLPlanImpl newRawSQLPlan(TextWriteHandle handle) { |
| 127 | + return new RawSQLPlanImpl(handle); |
| 128 | + } |
| 129 | + @Override |
| 130 | + public RawSPARQLSelectPlanImpl newRawSPARQLSelectPlan(TextWriteHandle handle) { |
| 131 | + return new RawSPARQLSelectPlanImpl(handle); |
| 132 | + } |
| 133 | + |
128 | 134 | @Override |
129 | 135 | public <T> T resultDocAs(Plan plan, Class<T> as) { |
130 | 136 | return resultDocAs(plan, as, null); |
@@ -1466,19 +1472,40 @@ private String getNameForColumn(PlanExprCol col) { |
1466 | 1472 | return ((PlanBuilderSubImpl.ColumnNamer) col).getColName(); |
1467 | 1473 | } |
1468 | 1474 | } |
1469 | | - static class RawPlanDefinitionImpl implements RawPlanDefinition, PlanBuilderBaseImpl.RequestPlan { |
| 1475 | + |
| 1476 | + static abstract class RawPlanImpl<W extends AbstractWriteHandle> implements RawPlan, PlanBuilderBaseImpl.RequestPlan { |
1470 | 1477 | private Map<PlanBuilderBaseImpl.PlanParamBase,BaseTypeImpl.ParamBinder> params = null; |
1471 | | - private JSONWriteHandle handle = null; |
1472 | | - RawPlanDefinitionImpl(JSONWriteHandle handle) { |
| 1478 | + private W handle; |
| 1479 | + private RawPlanImpl(W handle) { |
1473 | 1480 | setHandle(handle); |
1474 | 1481 | } |
1475 | | - private RawPlanDefinitionImpl( |
1476 | | - JSONWriteHandle handle, |
1477 | | - Map<PlanBuilderBaseImpl.PlanParamBase,BaseTypeImpl.ParamBinder> params) { |
| 1482 | + private RawPlanImpl( |
| 1483 | + W handle, |
| 1484 | + Map<PlanBuilderBaseImpl.PlanParamBase,BaseTypeImpl.ParamBinder> params) { |
1478 | 1485 | this(handle); |
1479 | 1486 | this.params = params; |
1480 | 1487 | } |
1481 | 1488 |
|
| 1489 | + abstract RawPlanImpl<W> parameterize(W handle, Map<PlanBuilderBaseImpl.PlanParamBase,BaseTypeImpl.ParamBinder> params); |
| 1490 | + abstract void configHandle(BaseHandle handle); |
| 1491 | + |
| 1492 | + @Override |
| 1493 | + public W getHandle() { |
| 1494 | + return handle; |
| 1495 | + } |
| 1496 | + public void setHandle(W handle) { |
| 1497 | + if (handle == null) { |
| 1498 | + throw new IllegalArgumentException("Must specify handle for reading raw plan"); |
| 1499 | + } |
| 1500 | + if (!(handle instanceof BaseHandle)) { |
| 1501 | + throw new IllegalArgumentException( |
| 1502 | + "Cannot provide raw plan with invalid handle having class "+handle.getClass().getName() |
| 1503 | + ); |
| 1504 | + } |
| 1505 | + configHandle((BaseHandle) handle); |
| 1506 | + this.handle = handle; |
| 1507 | + } |
| 1508 | + |
1482 | 1509 | @Override |
1483 | 1510 | public Map<PlanBuilderBaseImpl.PlanParamBase,BaseTypeImpl.ParamBinder> getParams() { |
1484 | 1511 | return params; |
@@ -1564,26 +1591,104 @@ public Plan bindParam(PlanParamExpr param, PlanParamBindingVal literal) { |
1564 | 1591 |
|
1565 | 1592 | nextParams.put((PlanBuilderBaseImpl.PlanParamBase) param, (XsValueImpl.AnyAtomicTypeValImpl) literal); |
1566 | 1593 |
|
1567 | | - return new RawPlanDefinitionImpl(getHandle(), nextParams); |
| 1594 | + return parameterize(getHandle(), nextParams); |
| 1595 | + } |
| 1596 | + } |
| 1597 | + static class RawSQLPlanImpl extends RawPlanImpl<TextWriteHandle> implements RawSQLPlan { |
| 1598 | + RawSQLPlanImpl(TextWriteHandle handle) { |
| 1599 | + super(handle); |
| 1600 | + } |
| 1601 | + RawSQLPlanImpl( |
| 1602 | + TextWriteHandle handle, Map<PlanBuilderBaseImpl.PlanParamBase,BaseTypeImpl.ParamBinder> params |
| 1603 | + ) { |
| 1604 | + super(handle, params); |
1568 | 1605 | } |
1569 | 1606 |
|
1570 | | - @Override |
1571 | | - public JSONWriteHandle getHandle() { |
1572 | | - return handle; |
| 1607 | + RawSQLPlanImpl parameterize( |
| 1608 | + TextWriteHandle handle, Map<PlanBuilderBaseImpl.PlanParamBase,BaseTypeImpl.ParamBinder> params |
| 1609 | + ) { |
| 1610 | + return new RawSQLPlanImpl(handle, params); |
1573 | 1611 | } |
1574 | | - @Override |
1575 | | - public void setHandle(JSONWriteHandle handle) { |
1576 | | - if (handle == null) { |
1577 | | - throw new IllegalArgumentException("Must specify handle for reading raw plan"); |
1578 | | - } |
1579 | | - if (!(handle instanceof BaseHandle)) { |
1580 | | - throw new IllegalArgumentException( |
1581 | | - "Cannot provide raw plan definition with invalid handle having class "+handle.getClass().getName() |
1582 | | - ); |
1583 | | - } |
1584 | | - ((BaseHandle) handle).setFormat(Format.JSON); |
1585 | | - this.handle = handle; |
| 1612 | + void configHandle(BaseHandle handle) { |
| 1613 | + handle.setFormat(Format.TEXT); |
| 1614 | + handle.setMimetype("application/sql"); |
| 1615 | + } |
| 1616 | + |
| 1617 | + public RawSQLPlan withHandle(TextWriteHandle handle) { |
| 1618 | + setHandle(handle); |
| 1619 | + return this; |
| 1620 | + } |
| 1621 | + } |
| 1622 | + static class RawSPARQLSelectPlanImpl extends RawPlanImpl<TextWriteHandle> implements RawSPARQLSelectPlan { |
| 1623 | + RawSPARQLSelectPlanImpl(TextWriteHandle handle) { |
| 1624 | + super(handle); |
| 1625 | + } |
| 1626 | + RawSPARQLSelectPlanImpl( |
| 1627 | + TextWriteHandle handle, Map<PlanBuilderBaseImpl.PlanParamBase,BaseTypeImpl.ParamBinder> params |
| 1628 | + ) { |
| 1629 | + super(handle, params); |
| 1630 | + } |
| 1631 | + |
| 1632 | + RawSPARQLSelectPlanImpl parameterize( |
| 1633 | + TextWriteHandle handle, Map<PlanBuilderBaseImpl.PlanParamBase,BaseTypeImpl.ParamBinder> params |
| 1634 | + ) { |
| 1635 | + return new RawSPARQLSelectPlanImpl(handle, params); |
| 1636 | + } |
| 1637 | + void configHandle(BaseHandle handle) { |
| 1638 | + handle.setFormat(Format.TEXT); |
| 1639 | + handle.setMimetype("application/sparql-query"); |
| 1640 | + } |
| 1641 | + |
| 1642 | + public RawSPARQLSelectPlan withHandle(TextWriteHandle handle) { |
| 1643 | + setHandle(handle); |
| 1644 | + return this; |
| 1645 | + } |
| 1646 | + } |
| 1647 | + static class RawQueryDSLPlanImpl extends RawPlanImpl<TextWriteHandle> implements RawQueryDSLPlan { |
| 1648 | + RawQueryDSLPlanImpl(TextWriteHandle handle) { |
| 1649 | + super(handle); |
| 1650 | + } |
| 1651 | + RawQueryDSLPlanImpl( |
| 1652 | + TextWriteHandle handle, Map<PlanBuilderBaseImpl.PlanParamBase,BaseTypeImpl.ParamBinder> params |
| 1653 | + ) { |
| 1654 | + super(handle, params); |
1586 | 1655 | } |
| 1656 | + |
| 1657 | + RawQueryDSLPlanImpl parameterize( |
| 1658 | + TextWriteHandle handle, Map<PlanBuilderBaseImpl.PlanParamBase,BaseTypeImpl.ParamBinder> params |
| 1659 | + ) { |
| 1660 | + return new RawQueryDSLPlanImpl(handle, params); |
| 1661 | + } |
| 1662 | + void configHandle(BaseHandle handle) { |
| 1663 | + handle.setFormat(Format.TEXT); |
| 1664 | + handle.setMimetype("application/vnd.marklogic.querydsl+javascript"); |
| 1665 | + } |
| 1666 | + |
| 1667 | + public RawQueryDSLPlan withHandle(TextWriteHandle handle) { |
| 1668 | + setHandle(handle); |
| 1669 | + return this; |
| 1670 | + } |
| 1671 | + } |
| 1672 | + static class RawPlanDefinitionImpl extends RawPlanImpl<JSONWriteHandle> implements RawPlanDefinition { |
| 1673 | + RawPlanDefinitionImpl(JSONWriteHandle handle) { |
| 1674 | + super(handle); |
| 1675 | + } |
| 1676 | + private RawPlanDefinitionImpl( |
| 1677 | + JSONWriteHandle handle, |
| 1678 | + Map<PlanBuilderBaseImpl.PlanParamBase,BaseTypeImpl.ParamBinder> params) { |
| 1679 | + super(handle, params); |
| 1680 | + } |
| 1681 | + |
| 1682 | + RawPlanDefinitionImpl parameterize( |
| 1683 | + JSONWriteHandle handle, Map<PlanBuilderBaseImpl.PlanParamBase,BaseTypeImpl.ParamBinder> params |
| 1684 | + ) { |
| 1685 | + return new RawPlanDefinitionImpl(handle, params); |
| 1686 | + } |
| 1687 | + void configHandle(BaseHandle handle) { |
| 1688 | + handle.setFormat(Format.JSON); |
| 1689 | + handle.setMimetype("application/json"); |
| 1690 | + } |
| 1691 | + |
1587 | 1692 | @Override |
1588 | 1693 | public RawPlanDefinition withHandle(JSONWriteHandle handle) { |
1589 | 1694 | setHandle(handle); |
|
0 commit comments