Skip to content

Commit bf6005f

Browse files
committed
Add initial finder for LineItem and Order
1 parent f33b039 commit bf6005f

File tree

7 files changed

+257
-0
lines changed

7 files changed

+257
-0
lines changed

README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,44 @@ StatementBuilder statementBuilder = new AdUnitStatementBuilderCreator()
4949
List<AdUnit> adUnits = adUnitFinder.findByStatementBuilder(statementBuilder);
5050
```
5151

52+
### Find LineItems
5253

54+
```java
55+
// Get the LineItemService.
56+
LineItemServiceInterface lineItemService =
57+
dfpServices.get(session, LineItemServiceInterface.class);
58+
59+
LineItemFinder lineItemFinder = new LineItemFinder(lineItemService);
60+
61+
// Find one LineItem
62+
LineItem lineItem = lineItemFinder.findById(123456l);
63+
64+
// Custom
65+
StatementBuilder statementBuilder = new LineItemStatementBuilderCreator()
66+
.withId(123456l, StatementCondition.EQUAL)
67+
.withLastModifiedDateTime(new DateTime(), StatementCondition.GREATER_OR_EQUAL)
68+
.toStatementBuilder();
5369

70+
List<LineItem> lineItems = lineItemFinder.findByStatementBuilder(statementBuilder);
71+
```
5472

73+
### Find Orders
5574

75+
```java
76+
// Get the OrderService
77+
OrderServiceInterface orderService =
78+
dfpServices.get(session, OrderServiceInterface.class);
79+
80+
OrderFinder orderFinder = new OrderFinder(orderService);
81+
82+
// Find one LineItem
83+
Order order = orderFinder.findById(123456l);
84+
85+
// Custom
86+
StatementBuilder statementBuilder = new OrderStatementBuilderCreator()
87+
.withId(123456l, StatementCondition.EQUAL)
88+
.withLastModifiedDateTime(new DateTime(), StatementCondition.GREATER_OR_EQUAL)
89+
.toStatementBuilder();
5690

91+
List<Order> orders = orderFinder.findByStatementBuilder(statementBuilder);
92+
```
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package eu.adlogix.com.google.api.ads.dfp.v201403;
2+
3+
import static com.google.common.base.Preconditions.checkNotNull;
4+
5+
import java.rmi.RemoteException;
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
9+
import org.joda.time.DateTime;
10+
11+
import com.google.api.ads.dfp.axis.utils.v201403.StatementBuilder;
12+
import com.google.api.ads.dfp.axis.v201403.ApiException;
13+
import com.google.api.ads.dfp.axis.v201403.LineItem;
14+
import com.google.api.ads.dfp.axis.v201403.LineItemPage;
15+
import com.google.api.ads.dfp.axis.v201403.LineItemServiceInterface;
16+
import com.google.common.collect.Iterables;
17+
import com.google.common.collect.Lists;
18+
19+
public class LineItemFinder {
20+
21+
private final LineItemServiceInterface lineItemService;
22+
23+
public LineItemFinder(final LineItemServiceInterface lineItemService) {
24+
checkNotNull(lineItemService);
25+
this.lineItemService = lineItemService;
26+
}
27+
28+
public LineItem findById(Long id) {
29+
return Iterables.getOnlyElement(findByLineItemStatementBuilder(new LineItemStatementBuilderCreator().withId(id, StatementCondition.EQUAL)));
30+
}
31+
32+
public List<LineItem> findByStatementBuilder(StatementBuilder statementBuilder) {
33+
34+
statementBuilder.limit(StatementBuilder.SUGGESTED_PAGE_LIMIT);
35+
36+
int totalResultSetSize = 0;
37+
38+
List<LineItem> lineItems = new ArrayList<LineItem>();
39+
40+
try {
41+
do {
42+
LineItemPage page = lineItemService.getLineItemsByStatement(statementBuilder.toStatement());
43+
44+
if (page.getResults() != null) {
45+
totalResultSetSize = page.getTotalResultSetSize();
46+
lineItems.addAll(Lists.newArrayList(page.getResults()));
47+
}
48+
49+
statementBuilder.increaseOffsetBy(StatementBuilder.SUGGESTED_PAGE_LIMIT);
50+
} while (statementBuilder.getOffset() < totalResultSetSize);
51+
52+
} catch (ApiException e) {
53+
throw new RuntimeException(e);
54+
} catch (RemoteException e) {
55+
throw new RuntimeException(e);
56+
}
57+
58+
return lineItems;
59+
}
60+
61+
private List<LineItem> findByLineItemStatementBuilder(LineItemStatementBuilderCreator lineItemStatementBuilder) {
62+
return findByLineItemStatementBuilder(lineItemStatementBuilder, null);
63+
64+
}
65+
66+
private List<LineItem> findByLineItemStatementBuilder(LineItemStatementBuilderCreator lineItemStatementBuilder,
67+
DateTime lastModifiedDateTime) {
68+
if (null != lastModifiedDateTime) {
69+
lineItemStatementBuilder.withLastModifiedDateTime(lastModifiedDateTime, StatementCondition.GREATER_OR_EQUAL);
70+
}
71+
72+
return findByStatementBuilder(lineItemStatementBuilder.toStatementBuilder());
73+
}
74+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package eu.adlogix.com.google.api.ads.dfp.v201403;
2+
3+
import org.joda.time.DateTime;
4+
5+
import com.google.api.ads.dfp.axis.utils.v201403.DateTimes;
6+
7+
public class LineItemStatementBuilderCreator extends BaseStatementBuilderCreator {
8+
9+
public LineItemStatementBuilderCreator withId(Long id, StatementCondition condition) {
10+
where(LineItemStatementQueryFilter.ID, new StatementQueryValue(id, condition));
11+
return this;
12+
}
13+
14+
public LineItemStatementBuilderCreator withLastModifiedDateTime(DateTime lastModifiedDateTime, StatementCondition condition) {
15+
where(LineItemStatementQueryFilter.LAST_MODIFIED_DATE_TIME, new StatementQueryValue(DateTimes.toDateTime(lastModifiedDateTime), condition));
16+
return this;
17+
}
18+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package eu.adlogix.com.google.api.ads.dfp.v201403;
2+
3+
public enum LineItemStatementQueryFilter implements StatementQueryFilter {
4+
5+
ID("id"), LAST_MODIFIED_DATE_TIME("lastModifiedDateTime");
6+
7+
private final String id;
8+
9+
private LineItemStatementQueryFilter(String id) {
10+
this.id = id;
11+
}
12+
13+
@Override
14+
public String getId() {
15+
return id;
16+
}
17+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package eu.adlogix.com.google.api.ads.dfp.v201403;
2+
3+
import static com.google.common.base.Preconditions.checkNotNull;
4+
5+
import java.rmi.RemoteException;
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
9+
import org.joda.time.DateTime;
10+
11+
import com.google.api.ads.dfp.axis.utils.v201403.StatementBuilder;
12+
import com.google.api.ads.dfp.axis.v201403.ApiException;
13+
import com.google.api.ads.dfp.axis.v201403.Order;
14+
import com.google.api.ads.dfp.axis.v201403.OrderPage;
15+
import com.google.api.ads.dfp.axis.v201403.OrderServiceInterface;
16+
import com.google.common.collect.Iterables;
17+
import com.google.common.collect.Lists;
18+
19+
public class OrderFinder {
20+
21+
private final OrderServiceInterface orderService;
22+
23+
public OrderFinder(final OrderServiceInterface orderService) {
24+
checkNotNull(orderService);
25+
this.orderService = orderService;
26+
}
27+
28+
public Order findById(Long id) {
29+
return Iterables.getOnlyElement(findByOrderStatementBuilder(new OrderStatementBuilderCreator().withId(id, StatementCondition.EQUAL)));
30+
}
31+
32+
public List<Order> findByStatementBuilder(StatementBuilder statementBuilder) {
33+
34+
statementBuilder.limit(StatementBuilder.SUGGESTED_PAGE_LIMIT);
35+
36+
int totalResultSetSize = 0;
37+
38+
List<Order> orders = new ArrayList<Order>();
39+
40+
try {
41+
do {
42+
OrderPage page = orderService.getOrdersByStatement(statementBuilder.toStatement());
43+
44+
if (page.getResults() != null) {
45+
totalResultSetSize = page.getTotalResultSetSize();
46+
orders.addAll(Lists.newArrayList(page.getResults()));
47+
}
48+
49+
statementBuilder.increaseOffsetBy(StatementBuilder.SUGGESTED_PAGE_LIMIT);
50+
} while (statementBuilder.getOffset() < totalResultSetSize);
51+
52+
} catch (ApiException e) {
53+
throw new RuntimeException(e);
54+
} catch (RemoteException e) {
55+
throw new RuntimeException(e);
56+
}
57+
58+
return orders;
59+
}
60+
61+
private List<Order> findByOrderStatementBuilder(OrderStatementBuilderCreator orderStatementBuilder) {
62+
return findByLineItemStatementBuilder(orderStatementBuilder, null);
63+
64+
}
65+
66+
private List<Order> findByLineItemStatementBuilder(OrderStatementBuilderCreator orderStatementBuilder,
67+
DateTime lastModifiedDateTime) {
68+
if (null != lastModifiedDateTime) {
69+
orderStatementBuilder.withLastModifiedDateTime(lastModifiedDateTime, StatementCondition.GREATER_OR_EQUAL);
70+
}
71+
72+
return findByStatementBuilder(orderStatementBuilder.toStatementBuilder());
73+
}
74+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package eu.adlogix.com.google.api.ads.dfp.v201403;
2+
3+
import org.joda.time.DateTime;
4+
5+
import com.google.api.ads.dfp.axis.utils.v201403.DateTimes;
6+
7+
public class OrderStatementBuilderCreator extends BaseStatementBuilderCreator {
8+
9+
public OrderStatementBuilderCreator withId(Long id, StatementCondition condition) {
10+
where(OrderStatementQueryFilter.ID, new StatementQueryValue(id, condition));
11+
return this;
12+
}
13+
14+
public OrderStatementBuilderCreator withLastModifiedDateTime(DateTime lastModifiedDateTime,
15+
StatementCondition condition) {
16+
where(OrderStatementQueryFilter.LAST_MODIFIED_DATE_TIME, new StatementQueryValue(DateTimes.toDateTime(lastModifiedDateTime), condition));
17+
return this;
18+
}
19+
20+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package eu.adlogix.com.google.api.ads.dfp.v201403;
2+
3+
public enum OrderStatementQueryFilter implements StatementQueryFilter {
4+
5+
ID("id"), LAST_MODIFIED_DATE_TIME("lastModifiedDateTime");
6+
7+
private final String id;
8+
9+
private OrderStatementQueryFilter(String id) {
10+
this.id = id;
11+
}
12+
13+
@Override
14+
public String getId() {
15+
return id;
16+
}
17+
18+
}

0 commit comments

Comments
 (0)