Project

General

Profile

1
package eu.dnetlib.repo.manager.client.datasources.update;
2

    
3
import com.google.gwt.core.client.GWT;
4
import com.google.gwt.user.client.rpc.AsyncCallback;
5
import com.google.gwt.user.client.ui.FlowPanel;
6
import com.google.gwt.user.client.ui.HTML;
7
import com.google.gwt.user.client.ui.Widget;
8
import eu.dnetlib.domain.data.Repository;
9
import eu.dnetlib.gwt.client.help.HelpService;
10
import eu.dnetlib.gwt.client.help.HelpServiceAsync;
11
import eu.dnetlib.repo.manager.client.HelpCallback;
12
import eu.dnetlib.repo.manager.client.RepositoryManager;
13
import eu.dnetlib.repo.manager.client.RepositoryManagerWidget;
14
import eu.dnetlib.repo.manager.client.services.RepositoryService;
15
import eu.dnetlib.repo.manager.client.services.RepositoryServiceAsync;
16
import eu.dnetlib.repo.manager.shared.DatasourceVocabularies;
17
import org.gwtbootstrap3.client.ui.Alert;
18
import org.gwtbootstrap3.client.ui.constants.AlertType;
19

    
20
/**
21
 * Created by stefania on 1/14/16.
22
 */
23
public class UpdateRepositoryWidget implements RepositoryManagerWidget {
24

    
25
    private String parentToken = "";
26
    private String restToken = "";
27

    
28
    private FlowPanel updateRepositoryPanel = new FlowPanel();
29

    
30
    private FlowPanel updateRepositoryColPanel = new FlowPanel();
31
    private FlowPanel updateRepositoryInnerPanel = new FlowPanel();
32
    private FlowPanel updateRepositoryBox = new FlowPanel();
33
    private FlowPanel updateRepositoryBoxContent = new FlowPanel();
34

    
35
    private Alert errorAlert = new Alert();
36

    
37
    private FlowPanel helpPanel = new FlowPanel();
38

    
39
    private RepositoryServiceAsync repositoryService = GWT.create(RepositoryService.class);
40
    private static HelpServiceAsync helpService = GWT.create(HelpService.class);
41

    
42
    public UpdateRepositoryWidget() {
43

    
44
        updateRepositoryPanel.addStyleName("row");
45

    
46
        updateRepositoryColPanel.addStyleName("col-lg-12");
47
        updateRepositoryColPanel.add(updateRepositoryInnerPanel);
48

    
49
        updateRepositoryInnerPanel.addStyleName("wrapper wrapper-content animated fadeInUp");
50
        updateRepositoryInnerPanel.add(updateRepositoryBox);
51

    
52
        updateRepositoryBox.addStyleName("ibox");
53
        updateRepositoryBox.add(updateRepositoryBoxContent);
54

    
55
        updateRepositoryBoxContent.addStyleName("ibox-content");
56

    
57
        errorAlert.setType(AlertType.DANGER);
58
        errorAlert.setDismissable(false);
59
        errorAlert.setVisible(false);
60
        updateRepositoryBoxContent.add(errorAlert);
61

    
62
        updateRepositoryPanel.add(updateRepositoryColPanel);
63
    }
64

    
65
    @Override
66
    public void clear() {
67
        updateRepositoryBoxContent.clear();
68
        errorAlert.setVisible(false);
69
        updateRepositoryPanel.remove(helpPanel);
70
    }
71

    
72
    @Override
73
    public void reload() {
74

    
75
        updateRepositoryBoxContent.add(errorAlert);
76

    
77
        final HTML loadingWheel = new HTML("<div class=\"loader-big\" style=\"text-align: center; padding-top: 170px; " +
78
                "color: rgb(47, 64, 80); font-weight: bold;\">Retrieving repository...</div>" +
79
                "<div class=\"whiteFilm\"></div>");
80
        updateRepositoryBoxContent.addStyleName("loading-big");
81
        updateRepositoryBoxContent.add(loadingWheel);
82

    
83
        helpService.getHelpById(parentToken + "_updateRepo", new HelpCallback(updateRepositoryColPanel, helpPanel, updateRepositoryPanel));
84

    
85
        repositoryService.getRepository(restToken, new AsyncCallback<Repository>() {
86

    
87
            @Override
88
            public void onFailure(Throwable caught) {
89

    
90
                updateRepositoryBoxContent.removeStyleName("loading-big");
91
                updateRepositoryBoxContent.remove(loadingWheel);
92

    
93
                errorAlert.setText("System error retrieving repository");
94
                errorAlert.setVisible(true);
95
            }
96

    
97
            @Override
98
            public void onSuccess(final Repository repository) {
99

    
100
                RepositoryManager.pageHeader.clear();
101

    
102
                String logoURLSource = "";
103
                if(repository.getLogoUrl()==null || repository.getLogoUrl().isEmpty())
104
                    logoURLSource = "img/yourLogoHere.jpg";
105
                else
106
                    logoURLSource = repository.getLogoUrl();
107

    
108
                RepositoryManager.pageHeader.add(new HTML("<div class=\"col-sm-9\"><h2><img src=\"" + logoURLSource + "\" alt=[Repo Logo]" +
109
                        "width=\"35px\" height=\"35px\" style=\"margin-right: 15px; margin-top:-2px\">" + repository.getOfficialName() + "</h2>" +
110
                        "<ol class=\"breadcrumb\"><li><a href=\"#dashboard\">Home</a></li><li><a href=\"#" + parentToken +
111
                        "\">Manage Datasources</a></li><li class=\"active\"><strong>" + repository.getOfficialName() +
112
                        "</strong></li></ol></div><div class=\"col-sm-3\"><div class=\"nav navbar-top-links navbar-right\">" +
113
                        "<button id=\"addLogoURL\" style=\"margin-top: 30px; margin-right: 20px\" type=\"button\" " +
114
                        "class=\"btn btn-w-m btn-white\">Update Logo URL</button></div></div>"));
115

    
116
                repositoryService.getDatasourceVocabularies(repository.getDatasourceType(),
117
                        new AsyncCallback<DatasourceVocabularies>() {
118

    
119
                    @Override
120
                    public void onFailure(Throwable caught) {
121

    
122
                        updateRepositoryBoxContent.removeStyleName("loading-big");
123
                        updateRepositoryBoxContent.remove(loadingWheel);
124

    
125
                        errorAlert.setText("System error retrieving datasource vocabularies");
126
                        errorAlert.setVisible(true);
127
                    }
128

    
129
                    @Override
130
                    public void onSuccess(DatasourceVocabularies datasourceVocabularies) {
131

    
132
                        updateRepositoryBoxContent.removeStyleName("loading-big");
133
                        updateRepositoryBoxContent.remove(loadingWheel);
134

    
135
                        UpdateRepositoryForm updateRepositoryForm =
136
                                new UpdateRepositoryForm(repository.getDatasourceType(), datasourceVocabularies, repository);
137
                        updateRepositoryBoxContent.add(updateRepositoryForm.asWidget());
138
                    }
139
                });
140
            }
141
        });
142
    }
143

    
144
    @Override
145
    public void setToken(String parentToken, String rest) {
146
        this.parentToken = parentToken;
147
        this.restToken = rest;
148
    }
149

    
150
    @Override
151
    public void afterAdditionToRootPanel() {
152

    
153
    }
154

    
155
    @Override
156
    public Widget asWidget() {
157
        return updateRepositoryPanel;
158
    }
159
}
(4-4/4)