1 7 package fr.jayasoft.ivy.repository; 8 9 import java.io.File ; 10 import java.io.IOException ; 11 import java.util.Arrays ; 12 13 import javax.swing.event.EventListenerList ; 14 15 import fr.jayasoft.ivy.Artifact; 16 import fr.jayasoft.ivy.IvyContext; 17 18 19 public abstract class AbstractRepository implements Repository { 20 private EventListenerList _listeners = new EventListenerList (); 21 private String _name; 22 private TransferEvent _evt; 23 24 public void addTransferListener(TransferListener listener) { 25 _listeners.add(TransferListener.class, listener); 26 } 27 28 public void removeTransferListener(TransferListener listener) { 29 _listeners.remove(TransferListener.class, listener); 30 } 31 32 public boolean hasTransferListener(TransferListener listener) { 33 return Arrays.asList(_listeners.getListeners(TransferListener.class)).contains(listener); 34 } 35 36 protected void fireTransferInitiated(Resource res, int requestType) { 37 _evt = new TransferEvent(IvyContext.getContext().getIvy(), this, res, TransferEvent.TRANSFER_INITIATED, requestType); 38 fireTransferEvent(_evt); 39 } 40 41 protected void fireTransferStarted() { 42 _evt.setEventType(TransferEvent.TRANSFER_STARTED); 43 fireTransferEvent(_evt); 44 } 45 46 protected void fireTransferStarted(long totalLength) { 47 _evt.setEventType(TransferEvent.TRANSFER_STARTED); 48 _evt.setTotalLength(totalLength); 49 _evt.setTotalLengthSet(true); 50 fireTransferEvent(_evt); 51 } 52 53 protected void fireTransferProgress(long length) { 54 _evt.setEventType(TransferEvent.TRANSFER_PROGRESS); 55 _evt.setLength(length); 56 if (!_evt.isTotalLengthSet()) { 57 _evt.setTotalLength(_evt.getTotalLength() + length); 58 } 59 fireTransferEvent(_evt); 60 } 61 62 protected void fireTransferCompleted() { 63 _evt.setEventType(TransferEvent.TRANSFER_COMPLETED); 64 if (_evt.getTotalLength() > 0 && !_evt.isTotalLengthSet()) { 65 _evt.setTotalLengthSet(true); 66 } 67 fireTransferEvent(_evt); 68 _evt = null; 69 } 70 71 protected void fireTransferCompleted(long totalLength) { 72 _evt.setEventType(TransferEvent.TRANSFER_COMPLETED); 73 _evt.setTotalLength(totalLength); 74 _evt.setTotalLengthSet(true); 75 fireTransferEvent(_evt); 76 _evt = null; 77 } 78 79 protected void fireTransferError() { 80 _evt.setEventType(TransferEvent.TRANSFER_ERROR); 81 fireTransferEvent(_evt); 82 _evt = null; 83 } 84 85 protected void fireTransferError(Exception ex) { 86 _evt.setEventType(TransferEvent.TRANSFER_ERROR); 87 _evt.setException(ex); 88 fireTransferEvent(_evt); 89 _evt = null; 90 } 91 92 protected void fireTransferEvent(TransferEvent evt) { 93 Object [] listeners = _listeners.getListenerList(); 94 for (int i = listeners.length-2; i>=0; i-=2) { 95 if (listeners[i]==TransferListener.class) { 96 ((TransferListener)listeners[i+1]).transferProgress(evt); 97 } 98 } 99 } 100 101 public String getFileSeparator() { 102 return "/"; 103 } 104 105 public String standardize(String source) { 106 return source.replace('\\', '/'); 107 } 108 109 public String getName() { 110 return _name; 111 } 112 113 114 public void setName(String name) { 115 _name = name; 116 } 117 118 public String toString() { 119 return getName(); 120 } 121 122 public void put(Artifact artifact, File source, String destination, boolean overwrite) throws IOException { 123 put(source, destination, overwrite); 124 } 125 126 protected void put(File source, String destination, boolean overwrite) throws IOException { 127 throw new UnsupportedOperationException ("put in not supported by "+getName()); 128 } 129 } 130 | Popular Tags |