Project

General

Profile

1
package eu.dnetlib.client.fundingrequest.existingrequests;
2

    
3
import com.github.gwtbootstrap.client.ui.Button;
4
import com.github.gwtbootstrap.client.ui.Modal;
5
import com.github.gwtbootstrap.client.ui.constants.BackdropType;
6
import com.google.gwt.core.client.GWT;
7
import com.google.gwt.event.dom.client.ClickEvent;
8
import com.google.gwt.event.dom.client.ClickHandler;
9
import com.google.gwt.user.client.History;
10
import com.google.gwt.user.client.rpc.AsyncCallback;
11
import com.google.gwt.user.client.ui.FlowPanel;
12
import com.google.gwt.user.client.ui.IsWidget;
13
import com.google.gwt.user.client.ui.Widget;
14
import eu.dnetlib.client.ContactForm;
15
import eu.dnetlib.client.DOIAndRepositoryForm;
16
import eu.dnetlib.client.DataService;
17
import eu.dnetlib.client.DataServiceAsync;
18
import eu.dnetlib.client.fundingrequest.newrequest.EligibilityDisplayWidget;
19
import eu.dnetlib.client.fundingrequest.stepinfo.*;
20
import eu.dnetlib.goldoa.domain.Comment;
21
import eu.dnetlib.goldoa.domain.Currency;
22
import eu.dnetlib.goldoa.domain.Request;
23
import eu.dnetlib.goldoa.domain.RequestComment;
24

    
25
import java.util.ArrayList;
26
import java.util.List;
27

    
28
/**
29
 * Created by stefania on 3/26/15.
30
 */
31
public class ExistingRequestElement implements IsWidget {
32

    
33
    private FlowPanel requestInfoPanel = new FlowPanel();
34

    
35
    private FlowPanel requestSummaryPanel = new FlowPanel();
36
    private FlowPanel firstDivider = new FlowPanel();
37
    private FlowPanel secondDivider = new FlowPanel();
38

    
39
    private FlowPanel actionButtons = new FlowPanel();
40
    private Button goToFundingWizard = new Button("Go to Funding Wizard");
41
    private Button addDOI = new Button("Add DOI / repository");
42

    
43
    private DataServiceAsync dataService = GWT.create(DataService.class);
44

    
45
    private PublicationUpdatedListener publicationUpdatedListener;
46

    
47
    public ExistingRequestElement(final Request request) {
48

    
49
        requestInfoPanel.addStyleName("requestInfoPanel");
50

    
51
        requestSummaryPanel.addStyleName("requestDetailedInfoPanel");
52

    
53
        if(request.getResearcher()!=null) {
54
            ResearcherInlineInfo researcherInlineInfo = new ResearcherInlineInfo(request.getResearcher());
55
            requestSummaryPanel.add(researcherInlineInfo.asWidget());
56
        }
57

    
58
        if(request.getProject()!=null) {
59
            ProjectInlineInfo projectInlineInfo = new ProjectInlineInfo(request.getProject());
60
            requestSummaryPanel.add(projectInlineInfo.asWidget());
61
        }
62

    
63
        if(request.getPublication()!=null) {
64
            PublicationInlineInfo publicationInlineInfo = new PublicationInlineInfo(request.getPublication());
65
            requestSummaryPanel.add(publicationInlineInfo.asWidget());
66
        }
67

    
68
        float apc = 0;
69
        float discount = 0;
70

    
71
        if(request.getPublication()!=null && request.getPublication().getJournal()!=null) {
72
            JournalInlineInfo journalInlineInfo = new JournalInlineInfo(request.getPublication().getJournal());
73
            requestSummaryPanel.add(journalInlineInfo.asWidget());
74
            apc = request.getPublication().getJournal().getApc();
75
            discount = request.getPublication().getJournal().getDiscount();
76
        }
77

    
78
        if(request.getPublication()!=null && request.getPublication().getPublisher()!=null) {
79
            PublisherInlineInfo publisherInlineInfo = new PublisherInlineInfo(request.getPublication().getPublisher());
80
            requestSummaryPanel.add(publisherInlineInfo.asWidget());
81
            apc = request.getPublication().getPublisher().getApc();
82
            discount = request.getPublication().getPublisher().getDiscount();
83
        }
84

    
85
        if(request.getPublication()!=null && request.getPublication().getLicense()!=null) {
86
            LicenseFullInfo licenseFullInfo = new LicenseFullInfo(request.getPublication().getLicense());
87
            requestSummaryPanel.add(licenseFullInfo.asWidget());
88
        }
89

    
90
        if(request.getProjectparticipation()!=null && request.getFundingrequested()!=null) {
91

    
92
            if(!request.getCurrency().equals(Currency.EUR)) {
93

    
94
                final float finalApc = apc;
95
                final float finalDiscount = discount;
96
                dataService.convert(request.getCurrency(), Currency.EUR, request.getFundingrequested(), new AsyncCallback<Float>() {
97

    
98
                    @Override
99
                    public void onFailure(Throwable throwable) {
100
                        AccountingInlineInfo accountingInlineInfo = new AccountingInlineInfo(request, finalApc, finalDiscount, request.getCurrency(), 0);
101
                        requestSummaryPanel.add(accountingInlineInfo.asWidget());
102
                    }
103

    
104
                    @Override
105
                    public void onSuccess(Float aFloat) {
106
                        AccountingInlineInfo accountingInlineInfo = new AccountingInlineInfo(request, finalApc, finalDiscount, request.getCurrency(), aFloat);
107
                        requestSummaryPanel.add(accountingInlineInfo.asWidget());
108
                    }
109
                });
110
            } else {
111
                AccountingInlineInfo accountingInlineInfo = new AccountingInlineInfo(request, apc, discount, request.getCurrency(), 0);
112
                requestSummaryPanel.add(accountingInlineInfo.asWidget());
113
            }
114
        }
115

    
116
        if(request.getInvoice()!=null) {
117
            InvoiceInlineInfo invoiceInlineInfo = new InvoiceInlineInfo(request.getInvoice());
118
            requestSummaryPanel.add(invoiceInlineInfo.asWidget());
119
        }
120

    
121
        if(request.getBankAccount()!=null &&
122
                ((request.getBankAccount().getBankName()!=null && !request.getBankAccount().getBankName().equals(""))
123
                        || (request.getBankAccount().getBankAddress()!=null && !request.getBankAccount().getBankAddress().equals(""))
124
                        || (request.getBankAccount().getAccountHolder()!=null && !request.getBankAccount().getAccountHolder().equals(""))
125
                        || (request.getBankAccount().getIban()!=null && !request.getBankAccount().getIban().equals(""))
126
                        || (request.getBankAccount().getBankCode()!=null && !request.getBankAccount().getBankCode().equals("")))) {
127
            BankAccountInlineInfo bankAccountInlineInfo = new BankAccountInlineInfo(request.getBankAccount());
128
            requestSummaryPanel.add(bankAccountInlineInfo.asWidget());
129
        }
130

    
131
        if(request.getPublisher().getEmail()!=null) {
132
            PublisherContactInfo publisherContactInfo = new PublisherContactInfo(request.getPublisher().getEmail());
133
            requestSummaryPanel.add(publisherContactInfo.asWidget());
134
        }
135

    
136
        actionButtons.addStyleName("requestInfoActionButtons");
137

    
138
        goToFundingWizard.addStyleName("requestInfoActionButton");
139
        goToFundingWizard.addClickHandler(new ClickHandler() {
140
            @Override
141
            public void onClick(ClickEvent event) {
142
                History.newItem("newFundingRequest." + request.getId());
143
            }
144
        });
145

    
146
        addDOI.addStyleName("requestInfoActionButton");
147
        addDOI.addClickHandler(new ClickHandler() {
148
            @Override
149
            public void onClick(ClickEvent event) {
150

    
151
                final Modal addDOIAndRepositoryModal = new Modal();
152

    
153
                addDOIAndRepositoryModal.addStyleName("contactModal");
154
                addDOIAndRepositoryModal.setTitle("Add DOI and Repository");
155
                addDOIAndRepositoryModal.setAnimation(true);
156
                addDOIAndRepositoryModal.setBackdrop(BackdropType.STATIC);
157
                addDOIAndRepositoryModal.setDynamicSafe(true);
158

    
159
                DOIAndRepositoryForm doiAndRepositoryForm = new DOIAndRepositoryForm(request.getPublication());
160
                DOIAndRepositoryForm.DOIAndRepositorySubmittedListener doiAndRepositorySubmittedListener =
161
                        new DOIAndRepositoryForm.DOIAndRepositorySubmittedListener() {
162
                    @Override
163
                    public void doiAndRepositorySubmitted() {
164
                        addDOIAndRepositoryModal.hide();
165
                        if(publicationUpdatedListener!=null)
166
                            publicationUpdatedListener.publicationUpdated();
167
                    }
168
                };
169
                doiAndRepositoryForm.setDoiAndRepositorySubmittedListener(doiAndRepositorySubmittedListener);
170

    
171
                addDOIAndRepositoryModal.add(doiAndRepositoryForm.asWidget());
172

    
173
                addDOIAndRepositoryModal.show();
174
            }
175
        });
176

    
177
        firstDivider.addStyleName("uk-grid-divider");
178
        secondDivider.addStyleName("uk-grid-divider");
179

    
180
        EligibilityDisplayWidget eligibilityDisplayWidget = new EligibilityDisplayWidget(request.getEligibility());
181

    
182
        requestInfoPanel.add(eligibilityDisplayWidget.asWidget());
183
        requestInfoPanel.add(firstDivider);
184
        requestInfoPanel.add(requestSummaryPanel);
185

    
186
        if(!request.getStatus().equals(Request.RequestStatus.ACCOUNTING_PAID) || (request.getRequestComments()!=null && !request.getRequestComments().isEmpty())) {
187

    
188
            requestInfoPanel.add(secondDivider);
189

    
190
            if(request.getRequestComments()!=null && !request.getRequestComments().isEmpty()) {
191
                List<Comment> comments = new ArrayList<>();
192
                for(RequestComment rc : request.getRequestComments())
193
                    comments.add(rc.getComment());
194
                CommentsInfo commentsInfo = new CommentsInfo(comments);
195
                commentsInfo.addStyleName("requestComments");
196
                requestInfoPanel.add(commentsInfo.asWidget());
197
            }
198

    
199
            if(!request.getStatus().equals(Request.RequestStatus.ACCOUNTING_PAID)) {
200
                actionButtons.add(goToFundingWizard);
201
            }
202
            actionButtons.add(addDOI);
203
            requestInfoPanel.add(actionButtons);
204
        }
205
    }
206

    
207
    @Override
208
    public Widget asWidget() {
209
        return requestInfoPanel;
210
    }
211

    
212
    public interface PublicationUpdatedListener {
213
        void publicationUpdated();
214
    }
215

    
216
    public void setPublicationUpdatedListener(PublicationUpdatedListener publicationUpdatedListener) {
217
        this.publicationUpdatedListener = publicationUpdatedListener;
218
    }
219
}
(2-2/2)