Mercurial > jhg
comparison src/org/tmatesoft/hg/internal/FNCacheFile.java @ 667:fba85bc1dfb8
Refactoring: move all encoding/decoding operations into single place, EncodingHelper
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Thu, 11 Jul 2013 17:54:08 +0200 |
| parents | ae2d439fbed3 |
| children |
comparison
equal
deleted
inserted
replaced
| 666:27a3ddedd6cc | 667:fba85bc1dfb8 |
|---|---|
| 22 import java.io.FileOutputStream; | 22 import java.io.FileOutputStream; |
| 23 import java.io.IOException; | 23 import java.io.IOException; |
| 24 import java.nio.ByteBuffer; | 24 import java.nio.ByteBuffer; |
| 25 import java.nio.CharBuffer; | 25 import java.nio.CharBuffer; |
| 26 import java.nio.channels.FileChannel; | 26 import java.nio.channels.FileChannel; |
| 27 import java.nio.charset.Charset; | |
| 28 import java.util.ArrayList; | 27 import java.util.ArrayList; |
| 29 import java.util.List; | 28 import java.util.List; |
| 30 | 29 |
| 31 import org.tmatesoft.hg.core.HgIOException; | 30 import org.tmatesoft.hg.core.HgIOException; |
| 32 import org.tmatesoft.hg.util.Path; | 31 import org.tmatesoft.hg.util.Path; |
| 81 if (addedDotI.isEmpty() && addedDotD.isEmpty()) { | 80 if (addedDotI.isEmpty() && addedDotD.isEmpty()) { |
| 82 return; | 81 return; |
| 83 } | 82 } |
| 84 File f = repo.getRepositoryFile(FNCache); | 83 File f = repo.getRepositoryFile(FNCache); |
| 85 f.getParentFile().mkdirs(); | 84 f.getParentFile().mkdirs(); |
| 86 final Charset filenameEncoding = repo.getFilenameEncoding(); | 85 final EncodingHelper fnEncoder = repo.buildFileNameEncodingHelper(); |
| 87 ArrayList<CharBuffer> added = new ArrayList<CharBuffer>(); | 86 ArrayList<CharBuffer> added = new ArrayList<CharBuffer>(); |
| 88 for (Path p : addedDotI) { | 87 for (Path p : addedDotI) { |
| 89 added.add(CharBuffer.wrap(pathHelper.rewrite(p))); | 88 added.add(CharBuffer.wrap(pathHelper.rewrite(p))); |
| 90 } | 89 } |
| 91 for (Path p : addedDotD) { | 90 for (Path p : addedDotD) { |
| 103 try { | 102 try { |
| 104 fos = new FileOutputStream(f, true); | 103 fos = new FileOutputStream(f, true); |
| 105 FileChannel fncacheFile = fos.getChannel(); | 104 FileChannel fncacheFile = fos.getChannel(); |
| 106 ByteBuffer lf = ByteBuffer.wrap(new byte[] { 0x0A }); | 105 ByteBuffer lf = ByteBuffer.wrap(new byte[] { 0x0A }); |
| 107 for (CharBuffer b : added) { | 106 for (CharBuffer b : added) { |
| 108 fncacheFile.write(filenameEncoding.encode(b)); | 107 fncacheFile.write(fnEncoder.toFNCache(b)); |
| 109 fncacheFile.write(lf); | 108 fncacheFile.write(lf); |
| 110 lf.rewind(); | 109 lf.rewind(); |
| 111 } | 110 } |
| 112 fncacheFile.force(true); | 111 fncacheFile.force(true); |
| 113 tr.done(f); | 112 tr.done(f); |
