Mercurial > hg4j
comparison src/com/tmate/hgkit/ll/HgDirstate.java @ 59:b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Tue, 18 Jan 2011 00:08:15 +0100 |
parents | 02ee376bee79 |
children |
comparison
equal
deleted
inserted
replaced
58:4cfc47bc14cc | 59:b771e94a4f7c |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2010 Artem Tikhomirov | 2 * Copyright (c) 2010, 2011 Artem Tikhomirov |
3 */ | 3 */ |
4 package com.tmate.hgkit.ll; | 4 package com.tmate.hgkit.ll; |
5 | 5 |
6 import java.io.File; | 6 import java.io.File; |
7 import java.io.IOException; | 7 import java.io.IOException; |
18 * @see http://mercurial.selenic.com/wiki/FileFormats#dirstate | 18 * @see http://mercurial.selenic.com/wiki/FileFormats#dirstate |
19 * @author artem | 19 * @author artem |
20 */ | 20 */ |
21 public class HgDirstate { | 21 public class HgDirstate { |
22 | 22 |
23 private final LocalHgRepo repo; | 23 private final DataAccessProvider accessProvider; |
24 private final File dirstateFile; | 24 private final File dirstateFile; |
25 private Map<String, Record> normal; | 25 private Map<String, Record> normal; |
26 private Map<String, Record> added; | 26 private Map<String, Record> added; |
27 private Map<String, Record> removed; | 27 private Map<String, Record> removed; |
28 private Map<String, Record> merged; | 28 private Map<String, Record> merged; |
29 | 29 |
30 public HgDirstate(LocalHgRepo hgRepo, File dirstate) { | 30 /*package-local*/ HgDirstate() { |
31 this.repo = hgRepo; | 31 // empty instance |
32 this.dirstateFile = dirstate; | 32 accessProvider = null; |
33 dirstateFile = null; | |
34 } | |
35 | |
36 public HgDirstate(DataAccessProvider dap, File dirstate) { | |
37 accessProvider = dap; | |
38 dirstateFile = dirstate; | |
33 } | 39 } |
34 | 40 |
35 private void read() { | 41 private void read() { |
36 normal = added = removed = merged = Collections.<String, Record>emptyMap(); | 42 normal = added = removed = merged = Collections.<String, Record>emptyMap(); |
37 if (!dirstateFile.exists()) { | 43 if (dirstateFile == null || !dirstateFile.exists()) { |
38 return; | 44 return; |
39 } | 45 } |
40 DataAccessProvider dap = repo.getDataAccess(); | 46 DataAccess da = accessProvider.create(dirstateFile); |
41 DataAccess da = dap.create(dirstateFile); | |
42 if (da.isEmpty()) { | 47 if (da.isEmpty()) { |
43 return; | 48 return; |
44 } | 49 } |
45 // not sure linked is really needed here, just for ease of debug | 50 // not sure linked is really needed here, just for ease of debug |
46 normal = new LinkedHashMap<String, Record>(); | 51 normal = new LinkedHashMap<String, Record>(); |