UIAddGadgetForm uiForm = event.getSource();
UIDashboard uiDashboard = uiForm.getAncestorOfType(UIDashboard.class);
UIDashboardContainer uiContainer = uiDashboard.getChild(UIDashboardContainer.class);
GadgetRegistryService service = uiForm.getApplicationComponent(GadgetRegistryService.class);
String url = uiForm.getUIStringInput(FIELD_URL).getValue();
UIApplication uiApplication = context.getUIApplication();
if (url == null || url.trim().length() == 0)
{
uiApplication.addMessage(new ApplicationMessage("UIDashboard.msg.required", null));
return;
}
url = url.trim();
if (!url.matches(URLValidator.URL_REGEX))
{
uiApplication.addMessage(new ApplicationMessage("UIDashboard.msg.notUrl", null));
return;
}
Gadget gadget;
UIGadget uiGadget;
//TODO check the way we create the unique ID, is it really unique?
try
{
String name = "gadget" + url.hashCode();
gadget = GadgetUtil.toGadget(name, url, false);
service.saveGadget(gadget);
uiGadget = uiForm.createUIComponent(context, UIGadget.class, null, null);
uiGadget.setState(new TransientApplicationState<org.exoplatform.portal.pom.spi.gadget.Gadget>(gadget.getName()));
}
catch (Exception e)
{
try
{
URI uri = URI.create(url);
RSSParser parser = new RSSParser();
RSSDocument<DefaultRSSChannel, DefaultRSSItem> doc = parser.createDocument(uri, "UTF-8");
if (doc == null)
throw new Exception("Wrong url");
}
catch (Exception e1)
{
uiApplication.addMessage(new ApplicationMessage("UIDashboard.msg.notUrl", null));
return;
}
String aggregatorId = uiDashboard.getAggregatorId();
gadget = service.getGadget(aggregatorId);
//TODO make sure it's an rss feed
// TODO make sure that we did not add it already
uiGadget = uiForm.createUIComponent(context, UIGadget.class, null, null);
uiGadget.setState(new TransientApplicationState<org.exoplatform.portal.pom.spi.gadget.Gadget>(gadget.getName()));