package io.onedev.server.web.component.issue.activities.activity;

import java.util.Date;

import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.LoadableDetachableModel;

import io.onedev.server.OneDev;
import io.onedev.server.entitymanager.IssueChangeManager;
import io.onedev.server.model.IssueChange;
import io.onedev.server.model.User;
import io.onedev.server.web.util.DeleteCallback;

@SuppressWarnings("serial")
public class IssueChangeActivity implements IssueActivity {

	private final Long changeId;
	
	public IssueChangeActivity(IssueChange change) {
		changeId = change.getId();
	}
	
	@Override
	public Panel render(String panelId, DeleteCallback callback) {
		return new IssueChangePanel(panelId, new LoadableDetachableModel<IssueChange>() {

			@Override
			protected IssueChange load() {
				return getChange();
			}
			
		});
	}

	public IssueChange getChange() {
		return OneDev.getInstance(IssueChangeManager.class).load(changeId);
	}
	
	@Override
	public Date getDate() {
		return getChange().getDate();
	}

	@Override
	public String getAnchor() {
		return getChange().getAnchor();
	}

	@Override
	public User getUser() {
		if (getChange().getUser() != null || getChange().getUserName() != null)
			return User.from(getChange().getUser(), getChange().getUserName());
		else
			return null;
	}

}