Skip to content

Commit 6543df1

Browse files
committed
Implemented event editing for SQL implementation.
1 parent b6272e7 commit 6543df1

File tree

3 files changed

+38
-10
lines changed

3 files changed

+38
-10
lines changed

java-admin-web/src/java/net/compsoc/ox/web/admin/sections/events/EditEventSection.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public <EKey, VKey> void renderPage(PathInfo info, PageBuilder builder,
7373
fillFormWithData(builder, events, event);
7474

7575
// Process form data
76-
if (new EditEventFormHandler<EKey, VKey>(events, event).handle(builder))
76+
if (new EditEventFormHandler<EKey, VKey>(builder, events, event).handle(builder))
7777
return;
7878

7979
NonceManager.setupNonce(builder);
@@ -139,10 +139,13 @@ private static class EditEventFormHandler<EKey, VKey> extends
139139
EventsAbstractFormHandler<EKey, VKey> {
140140

141141
public final Event<EKey, VKey> event;
142+
private final PageBuilder builder;
142143

143-
public EditEventFormHandler(Events<EKey, VKey> events, Event<EKey, VKey> event) {
144+
public EditEventFormHandler(PageBuilder builder, Events<EKey, VKey> events,
145+
Event<EKey, VKey> event) {
144146
super(events);
145147
this.event = event;
148+
this.builder = builder;
146149
}
147150

148151
@Override
@@ -155,6 +158,9 @@ public void handleData(int year, Term term, String slug, String title, String de
155158
events.setTags(event.key(), tags);
156159
} catch (NotFoundException | InvalidKeyException e) {
157160
throw new RuntimeException("Unexpected exception during event editing", e);
161+
} catch (DatabaseOperationException e) {
162+
builder.errors().add("Unable to update event: " + e.getMessage());
163+
return;
158164
}
159165

160166
throw new RedirectException(String.format("../../view/%s/", events.getKeyFactory()

java-core/src/net/compsoc/ox/database/iface/events/Events.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public Event<Key, VenueKey> addEvent(int year, Term term, String slug, String ti
3030

3131
public Event<Key, VenueKey> updateEvent(Key event, int year, Term term, String slug,
3232
String title, String description, String facebookEventId, Venue<VenueKey> venue,
33-
Date start, Date end) throws NotFoundException, InvalidKeyException;
33+
Date start, Date end) throws NotFoundException, InvalidKeyException, DatabaseOperationException;
3434

3535
public void setTags(Key event, Set<Tag> tags) throws NotFoundException, InvalidKeyException;
3636
}

java-core/src/net/compsoc/ox/database/impl/sql/events/SQLEvents.java

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -125,14 +125,13 @@ public synchronized Event<Integer, String> addEvent(int year, Term term, String
125125
insertEvent.setDate(8, new java.sql.Date(start.getTime()));
126126
insertEvent.setDate(9, new java.sql.Date(end.getTime()));
127127

128-
if(insertEvent.executeUpdate() == 0)
128+
if (insertEvent.executeUpdate() == 0)
129129
throw new DatabaseOperationException("Unable to create event, zero rows affected");
130130

131131
try (ResultSet generatedKeys = insertEvent.getGeneratedKeys()) {
132132
if (generatedKeys.next()) {
133-
return(getEvent(generatedKeys.getInt(1)));
134-
}
135-
else {
133+
return (getEvent(generatedKeys.getInt(1)));
134+
} else {
136135
throw new SQLException("Creating event failed, no ID obtained.");
137136
}
138137
} catch (NotFoundException | InvalidKeyException e) {
@@ -148,9 +147,32 @@ public synchronized Event<Integer, String> addEvent(int year, Term term, String
148147
@Override
149148
public synchronized Event<Integer, String> updateEvent(Integer event, int year, Term term,
150149
String slug, String title, String description, String facebookEventId, Venue<String> venue,
151-
Date start, Date end) {
152-
// TODO Auto-generated method stub
153-
return null;
150+
Date start, Date end) throws DatabaseOperationException {
151+
try {
152+
153+
updateEvent.setInt(1, year);
154+
updateEvent.setString(2, term.name().toLowerCase());
155+
updateEvent.setString(3, slug);
156+
updateEvent.setString(4, title);
157+
updateEvent.setString(5, description);
158+
updateEvent.setString(6, facebookEventId);
159+
updateEvent.setString(7, venue.key());
160+
updateEvent.setDate(8, new java.sql.Date(start.getTime()));
161+
updateEvent.setDate(9, new java.sql.Date(end.getTime()));
162+
updateEvent.setInt(10, event.intValue());
163+
164+
if (updateEvent.executeUpdate() == 0)
165+
throw new DatabaseOperationException("Unable to update event, zero rows affected");
166+
167+
try {
168+
return (getEvent(event));
169+
} catch (NotFoundException | InvalidKeyException e) {
170+
throw new DatabaseOperationException("Exception fetching event after creation", e);
171+
}
172+
173+
} catch (SQLException e) {
174+
throw new DatabaseOperationException(e);
175+
}
154176
}
155177

156178
@Override

0 commit comments

Comments
 (0)